prev up next   top/contents search

comp.lang.c FAQ 列表· 问题 3.1

为什么这段代码

a[i] = i++;
的函数调用是否会工作?


子表达式i++会产生副作用——它会修改i的值——这会导致未定义的行为,因为i在同一表达式中的其他地方也被引用。无法知道引用是在副作用之前还是之后发生——事实上,没有一种明显的解释可能成立;请参阅问题 3.9。(请注意,虽然 K&R 中的语言暗示此表达式的行为是未指定的,但 C 标准则更明确地指出它是未定义的——请参阅问题 11.33。)

参考:K&R1 第 2.12 节
K&R2 第 2.12 节
ISO 第 6.3 节
H&S 第 7.12 节 pp. 227-9


prev up next   contents search
关于此 FAQ 列表   关于 Eskimo   搜索   反馈   版权

Eskimo North 托管