#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
问题是,如果signed
和unsigned
整数都可以通过应用合适的格式字符串来显示所有类型的整数,那么unsigned
首先需要什么? ?
答案 0 :(得分:3)
你是对的(在使用两个补码并具有32位整数的机器上),0xFFFFFFFF
显示为-1
%d
,但是{ {1}} 4294967295
。
但严格来说,这是未定义的行为。
但有符号和无符号变量之间的真正区别在于它们的算术解释。主要区别是
答案 1 :(得分:1)
Unsigned
可以保持更大的正值,而不是负值。 Unsigned
使用前导位作为值的一部分,而签名版本使用最左侧位来标识数字是正数还是负数。有符号整数可以包含正数和负数。