请问这个C++程序输出的结果是怎么计算的?

程序如下图。若将 i 的值改为 -2 ,则输出4294967294。
2025-02-27 18:01:19
推荐回答(3个)
回答1:

这个和你自己机器的位数、操作系统位数有关系,和编译器也有关系,要具体看,这种实际就是操作的位值,就相当于溢出,不同机器上的产生值不一样。具体就是所有数字全为1表示的十进制数值。
编程没有这么写的,这么写有很多编译器直接会打出警告。

回答2:

这是因为你定义的数据是unsigned int类型,(无符号整型)
所以,unsigned i=-1,实际是i的值是 32位的4294967295,而不是你期望的-1.
因为x86体系的计算机,是采用补码表示数据的。
而-1的补码,恰好是2的32方-1=4294967295。

回答3:

如果int的字长为4字节,-1就是0xFFFFFFFF,转为无符号的十进制数就是4294967295。