min宏的奇怪行为

时间:2017-09-02 09:13:50

标签: c++ min

当我执行以下代码时:

StringFormat

我获得cout<<min(INT_MAX, INT_MAX+ INT_MAX); 作为输出。有人可以解释原因吗? 输出不应该是-2的值吗?

1 个答案:

答案 0 :(得分:5)

INT_MAX+ INT_MAX调用未定义的行为,因为有符号整数溢出。

C ++标准:

  

如果在评估表达式期间,结果不是   在数学上定义或不在可表示值的范围内   它的类型,行为未定义