gpt4 book ai didi

c++ - 运算符优先顺序和求值困惑

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

在书中和 here考虑到递增和递减运算符的优先级高于三元运算符,但是为什么在下面的代码中,b和c的值都没有递增,而只有b递增(或者c递增,条件为假)

int a=1,h;
h = (a==1)?++b:++c;
printf("%d%d",b,c);

或者甚至像

这样的陈述
++i&&++j||++k;   // why not all the increment and decrement operator executes first

如果我犯了一些概念性错误,请解释一下,并为自己太菜鸟而感到抱歉(如果这是重复的,请将我重定向到原始问题,我没有找到)

最佳答案

条件 (?:)、逻辑合取 (&&) 和逻辑或 (||) 运算符是惰性运算符。它们仅评估产生结果所需的操作数。

对于条件运算符,它仅计算两个分支之一;如果条件计算结果为 true,则返回第一个;如果条件计算结果为 false,则返回第二个。

如果左侧表达式的计算结果为 false,逻辑连接运算符将不会计算右侧表达式,因为无论如何结果都将为 false。逻辑析取运算符以类似的方式运行,不同之处在于,如果左侧求值为 true,则它不会计算右侧: true ||无论x如何,x始终为真。

<小时/>

除非您正在处理重载的 &&||。重载运算符无法对操作数执行惰性求值。

关于c++ - 运算符优先顺序和求值困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17653818/

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