C99 标准中的哪里说有符号整数溢出是未定义的行为?

Jas*_*n S 3 c c99 undefined-behavior

C99 标准中的哪里说有符号整数溢出是未定义的行为?

我在 6.2.5 节看到关于无符号整数溢出的评论是明确定义的(请参阅为什么无符号整数溢出定义了行为,但有符号整数溢出不是?):

涉及无符号操作数的计算永远不会溢出,因为无法由结果无符号整数类型表示的结果以比结果类型可以表示的最大值大 1 的数为模减少。

但我在附录 J 中查看未定义行为,我只在列表中看到这些类似的项目:

具有符号提升类型的表达式被左移,并且表达式的值为负或移位的结果将无法在提升类型中表示

无法表示整数算术或转换函数的结果值

(注意这是指“整数算术函数”,而不是整数算术本身

Hal*_*own 5

我没有 C99 的副本,但在 C11 标准中,此文本出现在第 6.5 节第 5 段中:

如果在对表达式求值期间出现异常情况(即,如果结果未在数学上定义或不在其类型的可表示值范围内),则行为未定义。

对于任何溢出来说,这似乎是一个包罗万象的东西;然后关于无符号整数的文本成为 6.5 ¶ 5 以上的特例。