gpt4 book ai didi

c - 递增和逻辑运算符优先级

转载 作者:行者123 更新时间:2023-12-02 06:32:17 25 4
gpt4 key购买 nike

在下面显示的程序中,应该首先评估前缀,因为它具有更高的优先级,但答案是 -2, 2, 0, 1 并且在“作为||的LHS”一书中进行了解释是真的 RHS 没有被评估。”
为什么会这样?所有的增量都应该首先执行,然后根据优先级检查逻辑。

#include<stdio.h>

int main()
{
int i=-3, j=2, k=0, m;
m = ++i || ++j && ++k;
printf("%d, %d, %d, %d\n", i, j, k, m);
return 0;
}

最佳答案

不要与 PrecedenceOrder of evaluation 混淆。

逻辑OR ||的求值顺序是从左到右。

所以如果 left = true 那么 left || right 永远不会执行 right。在您的代码中发生了完全相同的情况。

如你所知,任何非零值在 C 中都被视为 true,因此 ++i-2。所以,

 m = ++i || ++j && ++k;
m = true || bla bla bla; //right not even checked!
m = true
m = 1

你得到了预期的输出。

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

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