我在下面的代码中遇到了这个意外的输出,当我将所有位都设置为1时,我正在验证short和int类型的无符号形式的最大值(以十进制形式表示).
#include <stdio.h>
int main()
{
unsigned int n1 = 0xFFFFFFFF;
unsigned short n2 = 0xFFFF;
printf("\nMax int = %+d", n1);
printf("\nMax short = %+d", n2);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我得到的输出是(使用Visual Studio 2017 C/C++编译器编译):
Max int = -1
Max short = +65535
Run Code Online (Sandbox Code Playgroud)
沿着unsigned short的行,我期待unsigned int的最大值为+4294967295.为什么不是这样?