最大值和最小值表示
无符号 unsigned int max = (unsigned int )-1 //1111 1111 1111 1111
unsigned int min = 0
有符号
int max = 0x7fffffff // 0111 1111 1111 1111
int min = 0x80000000 // 1000 0000 0000 0000
无符号
unsigned char max = (unsigned char )-1 // 1111 1111
unsigned char min = 0;
有符号
char max = 0x7f; // 0111 1111
char min = 0x80; // 1000 0000
整数溢出之后发生了什么事情
(char)(-128*-1)= -128
整数向上溢出 最小值
整数向下溢出 最大值
一个字节为例子
有符号[-128,127] 127+1=-128 -128+1=127
无符号[0,255] 255+1=0 0-1=255
小总结
sizeof是操作符,不是一个函数,是在编译决断确定的。
在16位系统中(int占2个字节),打印输出为:
int i = 65536;
printf(“%d\n”,i); // 0
int i = 65535;
printf(“%d\n”,i); // -1