C++问题
本帖最后由 tt000 于 2021-7-23 16:17 编辑4单选(2分)
写出下面程序的输出结果:
unsigned int x = 0xffffffff;
unsigned int b = x + 2;
int y = x;
printf("%x,%d,%x,%d",y,y,b,b);
A.
其他三个选项都不对
B.
ffffffff,4294967295,1,1
C.
ffffffff,4294967295,100000001,4294967297
D.
ffffffff,-1,1,1 选D 临时号 发表于 2021-7-24 00:26
选D
为什么 本帖最后由 临时号 于 2021-7-24 15:05 编辑
x为无符号整型的最大值,b = x + 2时发生了溢出,即b = 1,因此可排除C选项,%d显示的是int型因此不管x是否为int类型,都会以int类型显示出来,而int型的-1与unsigned int的十六进制数ffffffff在二进制上表示是一样的,因此,y用int类型显示出来是-1,因此选D
页:
[1]