这是MSDN文档中的错误吗?

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 是吗?

Mit*_*eat 6

文档是正确的.

-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类型字段字符

  • 您是否只是复制粘贴他的答案然后投票给他? (6认同)
  • 请下注者发表评论.谢谢. (2认同)