gpt4 book ai didi

c - 在递增/递减运算符的情况下短路 AND

转载 作者:行者123 更新时间:2023-12-02 05:37:09 25 4
gpt4 key购买 nike

在下面的代码中:

#include <stdio.h>

int main()
{
int a = 1;
int b = 1;
int c = a || --b;
int d = a-- && --b;
printf("a = %d, b = %d, c = %d, d = %d", a, b, c, d);
return 0;
}

我期望输出是:

a=0,b=1,c=1,d=0

因为下面一行短路,即 a-- 返回 0,所以其他部分不会正确执行?

int d = a-- && --b;

输出是:

a = 0, b = 0, c = 1, d = 0

谁能解释一下?

最佳答案

第一种情况

int c = a || --b;  

在此之后 a=1b=1c=1

a 值为 1 ,因为短路评估 --b 没有执行

int d = a-- && --b;

a--post decrement 所以 a 的减少不会影响表达式其中 --bpre decrement 所以效果在这里

你的条件变成了

   int d= 1 && 0 ; 

在此 a=0; 之后,b=0c=1d=0

关于c - 在递增/递减运算符的情况下短路 AND,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19606560/

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