最佳答案
-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给出了一些相关的“奇闻轶事”;以及整数是如何表示的。所以印象深刻!