|
@@ -380,7 +380,7 @@ int stupid(int a) {
|
|
|
|
|
|
* 情况 1:`a != INT_MAX`
|
|
|
`+` 的行为是有定义的 → 编译器必须返回 1
|
|
|
-* 情况 2:`a == INT_MAX`
|
|
|
+* 情况 2:`a == INT_MAX`
|
|
|
`+` 的行为是未定义的 → 编译器不需要做任何事
|
|
|
|
|
|
再一次地,情况 2 是退化的,编译器不会考虑它。既然只需要考虑情况 1,
|
|
@@ -397,7 +397,7 @@ stupid:
|
|
|
|
|
|
* 情况 1:`a != INT_MAX`
|
|
|
行为是有定义的 → 编译器必须返回 1
|
|
|
-* 情况 2:`a == INT_MAX`
|
|
|
+* 情况 2:`a == INT_MAX`
|
|
|
行为是有定义的 → 编译器必须返回 0
|
|
|
|
|
|
这样就不能消除分类讨论,编译器只好真的进行加法运算,再检查结果:
|