gpt4 book ai didi

c - C99有些句子看不懂

转载 作者:太空狗 更新时间:2023-10-29 17:16:26 25 4
gpt4 key购买 nike

在 C99 6.5 中说:

Between the previous and next sequence point an object shall have itsstored value modified at most once by the evaluation of an expression.Furthermore, the prior value shall be read only to determine the valueto be stored

“此外,只读取先验值以确定要存储的值”是什么意思?在 C99 中,为什么 a[i++] = 1 是未定义的行为?

最佳答案

a[i++] = 1 已定义(除非它有其他未定义的原因而不是副作用的顺序:越界访问,或未初始化的 i ).

你的意思是 a[i++] = i,这是未定义的行为,因为它在与 i++ 相同的序列点之间读取 i,这改变它。

“此外,只读取先前的值以确定要存储的值”部分意味着 i = i + 1; 是允许的,尽管它读取自 i 并修改 i

另一方面,a[i] = (i=1); 是不允许的,因为尽管只写了一次 i,从 i 不用于计算存储的值。

关于c - C99有些句子看不懂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19033354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com