gpt4 book ai didi

与 C 中赋值运算符的关联性混淆

转载 作者:太空狗 更新时间:2023-10-29 15:46:13 25 4
gpt4 key购买 nike

众所周知,赋值运算符的结合性是从右到左的,但是在给定的代码中,如果我们从右到左输出应该为零,但输出为 1。

 main()
{
int a=3,b=2;
a=a==b==0;
printf("%d",a);
}

如果我们向右转到 letf,输出如何变成 1??

如果我们从右到左,则 (b==0) 应该首先求值并给出结果 0,然后表达式 (a==0) 求值也给出 0,最后 a 的值将为 0。

最佳答案

赋值是通过 RTL 完成的,但等式 (==) 不是。

声明实际上是:

a = ((a == b) == 0)

作业的右侧从左到右进行评估。在步骤中,这就是正在发生的事情:

  1. a == b0
  2. 0 == 01
  3. 1 被分配给 a

关于与 C 中赋值运算符的关联性混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6954610/

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