gpt4 book ai didi

c - 括号运算符说明

转载 作者:太空宇宙 更新时间:2023-11-04 06:29:49 25 4
gpt4 key购买 nike

int a=10,b=20;
b = a+b-(a=b);

在这个表达式中,为什么 (a=b) 不是第一个操作?如果它根据优先级执行,那么它 b 必须自己得到 20。但是 b 本身就是 10,为什么?谁能解开我的疑惑?

最佳答案

这会调用未定义的行为。任何事情都有可能发生。请注意,这里可以确定 (a=b) 在减法之前求值,但它不能保证 b 的值被分配给 a 就在评价之后。 a 可能会在下一个序列点(此处语句的 ;)之后被修改。

标准规定

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

推荐阅读:c-faq Question 3.8

关于c - 括号运算符说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21846713/

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