-2147483648是32位整数类型的最小整数,但似乎在if(...)句子中溢出:
if (-2147483648 > 0)
std::cout << "true";
else
std::cout << "false";
这将true在我的测试中打印。但是,如果将-2147483648强制转换为整数,结果将有所不同:
if (int(-2147483648) > 0)
std::cout << "true";
else
std::cout << "false";
这将打印false。
我糊涂了。谁能解释一下?
更新02-05-2012:
感谢您的评论,在我的编译器中,int的大小为4个字节。我正在使用VC进行一些简单的测试。我已经更改了问题的描述。
在这篇文章中,这得到了很多很好的答复,AndreyT给出了关于编译器将如何对此类输入进行操作以及如何实现此最小整数的非常详细的解释。另一方面,qPCR4vir提供了一些相关的“好奇心”以及整数的表示方式。好厉害!
慕桂英4014372
Helenr
吃鸡游戏
相关分类