min宏的奇怪行为

Sh.*_*h.A 1 c++ min

当我执行以下代码时:

cout<<min(INT_MAX, INT_MAX+ INT_MAX);
Run Code Online (Sandbox Code Playgroud)

我获得-2了输出.有人可以解释原因吗?
输出不应该是值INT_MAX

msc*_*msc 5

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

C++标准:

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