gpt4 book ai didi

c - 子表达式的求值顺序

转载 作者:行者123 更新时间:2023-11-30 20:26:48 25 4
gpt4 key购买 nike

如果不能保证子表达式的求值顺序,那么为什么这是正确的?

int a = 1;
a = a + 1;

这里编译器可以首先评估 a然后a + 1所以 a 可以是 1 或 2虽然这不是:

a = a++;

这里编译器可以首先评估 a然后a++子 a 可以是 1 或 2。

有什么区别?

最佳答案

这是未定义的行为。原因如下::

The Standard in §5/4 says

Between the previous and next sequence point a scalar object shall have its stored value modified at most once by the evaluation of an expression.

The prior value shall be accessed only to determine the value to be stored.

这意味着,在两个序列点之间,不得多次修改变量,并且如果在完整表达式中写入对象,则同一表达式中对其的任何和所有访问都必须直接参与计算要写入的值。

关于c - 子表达式的求值顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24031986/

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