【发布时间】:2012-12-28 13:49:05
【问题描述】:
众所周知,最小整数因编译器而异,所以我有一个问题:使用各种编译器时(int)-2147483648除以(int)-1的结果是什么?比如VC6.0、VS2010等?
【问题讨论】:
-
出于好奇:您为什么要尝试除法?是的,在这种情况下是一样的,但我从来没有想过用除法而不是乘法来做否定。
-
乘法或除法无关紧要。如果对有符号整数的算术运算结果不可表示,则结果由实现定义。实现可以定义结果或发出信号。 (至少在 C99 中,参见 §6.3.1.3。)您需要查看 Microsoft 的编译器文档。
-
@Mat 它没有定义实现。这是未定义的行为:
INT_MIN / -1是未定义的行为,因为 c99 中的6.5.5p5。 -
为什么你需要知道这个?行为是未定义的,所以你不应该首先尝试,编译器不需要给出一致的结果。
标签: c++ c compiler-construction integer