gpt4 book ai didi

c - C 中逻辑运算符的优先级和结合性

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

我们有一个表达式

int x,y,z;
x=y=z=2;

y=++x || --y;

printf("%d %d",x,y);

它给出 x=3y=2作为输出,但我认为这里我们有 4 个运算符:++ , -- , ||= .

我们知道++--具有最高优先级,因此必须首先评估它们,然后是 ||然后= .

我们还知道++--具有相同的优先级,因此我们使用关联性,在本例中它是从右到左。所以我想先--y将被评估,给出 y=1 ,然后++x这应该给出 x=3然后||应该进行评估。

为什么我的机器得到不同的答案?谢谢。

最佳答案

运算符的优先级与求值顺序无关。请注意,子表达式的求值顺序与关联性和优先级无关。

The order in which operands in an expression are evaluated is unspecified in C. The only guarantee is that they will all be completely evaluated at the next sequence point.

在您的情况下,x++ 被评估,而 --y 未评估,这给您带来了问题。

关于c - C 中逻辑运算符的优先级和结合性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25555578/

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