if(...)
-2147483648 是 32 位整数类型的最小整数,但在句子中似乎会溢出:
if (-2147483648 > 0)
std::cout << "true";
else
std::cout << "false";
true
这将在我的测试中打印。但是,如果我们将 -2147483648 转换为整数,结果会有所不同:
if (int(-2147483648) > 0)
std::cout << "true";
else
std::cout << "false";
这将打印false
.
我很困惑。任何人都可以对此作出解释吗?
2012 年 2 月 5 日更新:
感谢您的评论,在我的编译器中, int 的大小为 4 个字节。我正在使用 VC 进行一些简单的测试。我已经更改了问题中的描述。
在这篇文章中有很多非常好的回复,AndreyT非常详细地解释了编译器将如何处理此类输入,以及如何实现这个最小整数。另一方面, qPCR4vir给出了一些相关的“好奇心”以及整数的表示方式。如此令人印象深刻!