小编ben*_*nyl的帖子

(-2147483648> 0)在C++中返回true?

-2147483648是具有32位的整数类型的最小整数,但它似乎会在if(...)句子中溢出:

if (-2147483648 > 0)
    std::cout << "true";
else
    std::cout << "false";
Run Code Online (Sandbox Code Playgroud)

这将true在我的测试中打印出来.但是,如果我们将-2147483648转换为整数,结果将是不同的:

if (int(-2147483648) > 0)
    std::cout << "true";
else
    std::cout << "false";
Run Code Online (Sandbox Code Playgroud)

这将打印false.

我糊涂了.谁能对此作出解释?


更新02-05-2012:

感谢您的评论,在我的编译器中,int的大小是4个字节.我正在使用VC进行一些简单的测试.我在我的问题中改变了描述.

这篇文章中有很多非常好的回复,AndreyT对编译器在这样的输入上的行为以及如何实现这个最小整数给出了非常详细的解释.另一方面,qPCR4vir给出了一些相关的"好奇心"以及如何表示整数.太棒了!

c++ overflow

238
推荐指数
4
解决办法
3万
查看次数

标签 统计

c++ ×1

overflow ×1