最小宏观的奇怪行为

Strange behaviour of the min macro

本文关键字:宏观      更新时间:2023-10-16

当我执行以下代码时:

cout<<min(INT_MAX, INT_MAX+ INT_MAX);

我获得-2作为输出。有人可以解释为什么吗?
输出不应该是INT_MAX

的值

INT_MAX+ INT_MAX调用不确定的行为,因为签名整数溢出。

C 标准:

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