【发布时间】:2021-11-13 06:00:52
【问题描述】:
自 C17 起,递减指向数组第一个元素的指针是未定义的行为。 This answer引用C17标准说法
C17 6.5.6/8
如果指针操作数和结果都指向同一个数组对象的元素,或者超过数组对象的最后一个元素,则计算不应产生溢出;否则,行为未定义。
这是最早定义的标准吗?早期标准中如何定义此类操作?以前合法吗?
【问题讨论】:
-
你真的看过早期的标准吗?我不相信这曾经是合法的。当然,可能有特定的实现,无论是标准前还是标准后,它恰好可以工作或记录在案。
-
C89 中的措辞几乎相同:port70.net/%7Ensz/c/c89/c89-draft.html#3.3.6
标签: c language-lawyer pointer-arithmetic