gpt4 book ai didi

c - c中(a=a+1)+(a=a+1)+(a=a+1)的结果?

转载 作者:太空宇宙 更新时间:2023-11-03 23:43:34 24 4
gpt4 key购买 nike

<分区>

当我用 gcc 编译这段代码并运行时

int a=1;
printf("%d",(a=a+1)+(a=a+1)+(a=a+1));

我期望结果是 2+3+4=9,但输出是 10。

我知道 (++a)+(++a)+(++a) 中存在未定义的行为,因为三个 ++ 副作用可以在评估所有 (++a) 之前运行。

但我认为 a=a+1 的值正是赋值求值后 a 的值。所以编译器不能先处理三个a=a+1,然后把变量a中的值作为a=a+1的值所有 a=a+1 均已评估。

我想知道按照c标准哪里错了。

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