有符号和无符号数据类型

默认情况下,C中的所有整数类型都是有符号的。有符号数据类型可以包含正值和负值。
可以使用signed关键字显式声明有符号数据类型。

#include <stdio.h>

int main() {
    signed char  myChar;   /* -128   to +127 */
    signed short myShort;  /* -32768 to +32767 */
    signed int   myInt;    /* -2^31  to +2^31-1 */
    signed long  myLong;   /* -2^31  to +2^31-1 */
    signed long long myLL; /* -2^63  to +2^63-1 */
}

可以将整数类型声明为unsigned以使其上限为double类型。

#include <stdio.h>

int main() {
    unsigned char  uChar;   /* 0 to 255 */
    unsigned short uShort;  /* 0 to 65535 */
    unsigned int   uInt;    /* 0 to 2^32-1 */
    unsigned long  uLong;   /* 0 to 2^32-1 */
    unsigned long long uLL; /* 0 to 2^64-1 */
}

printf中,说明符%u用于unsigned charshortint类型。
unsigned long类型用%lu指定,unsigned long long%llu指定。

#include <stdio.h>

int main() {
    unsigned int uInt = 0;
    printf(%u, uInt); /* 0 */
}

执行上面示例代码,得到以下结果:

0

signedunsigned关键字可以单独用作类型,在这种情况下,编译器假定int类型。

#include <stdio.h>

int main() {
    unsigned uInt; /* unsigned int */
    signed sInt;   /* signed int */
}

同样,short类型和long类型是short intlong int的缩写。

#include <stdio.h>

int main() {

    short myShort; /* short int */
    long myLong;   /* long int */
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。