我理解 C++ 之所以将 INT_MIN 定义为 (-2147483647 - 1) 的原因,但他们为什么不直接使用 1<<31 呢?那样可以避免溢出,并且易于理解。
我理解 C++ 之所以将 INT_MIN 定义为 (-2147483647 - 1) 的原因,但他们为什么不直接使用 1<<31 呢?那样可以避免溢出,并且易于理解。
E1
具有带符号类型 且为非负值... - cHaoINT_MIN
是由实现定义的,因此“未定义行为”是完全可以接受的。几乎每个offset_of
的实现都依赖于它,以及可变参数。 - MSalters因为 1 << 31
调用了未定义行为(假设是32位的int
)。
-(2147483648)
,而2147483648
肯定大于32位平台上的INT_MAX
。 - MSalters-123
?即空格是否是标记的一部分?这样的更改很少像看起来那么简单。您必须证明没有合理的程序会受到影响。 - MSalters1 2 3
不是123
);我只是批评最初的决定。 - Matthieu M.