Cod*_*mer 0 c c++ microprocessors
这是MSDN链接来自http://msdn.microsoft.com/en-us/library/s3f49ktz(v=VS.80).aspx
它表示:unsigned int:4byte Value of Value 0到4,294,967,295
因此我的测试代码:
void main(void)
{
unsigned int sum; //4byte, 32bit
sum = 2147483648; //2^31 represent by 1 followed by 31 0s
printf("sum is %d\n",sum);
sum = sum -1 ; //2^31-1 represent by 0 followed by 31 1s
printf("sum is %d\n",sum);
getchar();
}
Run Code Online (Sandbox Code Playgroud)
我肯定4,294,967,295 = 2 ^ 32-1,printf会打印"0",转储最重要的一点我觉得MSDN应该写的值范围:0到2147483647 是吗?
文档是正确的.
-2147483648到2147483647(2 31 - 1)是signed int 的范围.
0到4294967295(2 32 - 1)是unsigned int 的范围.
用%u
而不是%d
printf("sum is %u\n",sum);
Run Code Online (Sandbox Code Playgroud)
请参阅printf类型字段字符