#include <stdio.h>
int main(int argc, char **args){
int d=4294967295;
unsigned e= -1;
printf("\n%u\n%d\n%d\n%u\n%lu\n",d,d,e,e,sizeof(int));
return 0;
}
输出:
4294967295
-1
-1
4294967295
4
问题是,如果有符号整数和无符号整数都可以通过应用合适的格式字符串来显示各种整数,那么还需要什么首先未签名
?
最佳答案
您是对的(在使用二进制补码并具有 32 位整数的机器上)0xFFFFFFFF
显示为 -1
与 %d
,但为 4294967295
和 %u
。
但严格来说,这是未定义的行为。
但是有符号变量和无符号变量之间的真正区别在于它们的算术解释。主要区别是
- 比较:-1 < 0,但 0 < 4294967295。
- 乘法和除法。
关于c - 无符号和有符号 int 的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34841990/