【发布时间】:2015-01-19 01:57:58
【问题描述】:
为什么 1 不大于 -0x80000000。我知道这与溢出有关。但是有人可以解释为什么吗? 0x80000000 不是我认为的常数吗?
assert(1 > -0x80000000);
C++ 中的断言触发器。这是为什么呢?
我很感谢提供的一些答案。但是 C++ 标准是否定义常量需要存储在 32 位整数中?为什么编译器不能识别 80000000 不适合 32 位整数并使用 64 位?我的意思是,最大的 32 位 int 可以是 0x7FFFFFFF。 0x80000000 显然比那个大。为什么编译器仍然使用 32 位?
【问题讨论】:
-
你认为
-0x80000000实际上代表了什么价值? -
闻起来像作业。
-
因为你的
unsigneds 有 32 个值位。 -
环绕。
-0x80000000无法在有符号的 32 位上表示。 -
是在 C++ 中以 32 位 int 表示的整数常量吗?为什么编译不识别这不适合 32 位整数并使用 64 长来存储它?