C语言中的有符号数和无符号数问题

为什么我在C中写
unsigned long int a=4294967295; //2的32次方-1
可是
printf("%d",a);
的结果为-1?
无符号长整型不是4个字节吗?最大存储数应该可以达到4294967295啊?
现在只能达到2的31次方,变成有符号数了

printf("%d",a); 改如下:
printf("%u",a); //用无符号形式输出,%d是按有符号形式输出。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-10-25
printf("%u", a);
第2个回答  2008-10-25
最高一位代表符号为:1代表负数,0代表正数
第3个回答  2008-10-25
%d是把这段内存当作long来显示值,和你怎么声明的没关系
相似回答