gpt4 book ai didi

c - && 在 C 编程语言中的行为

转载 作者:太空狗 更新时间:2023-10-29 16:25:36 24 4
gpt4 key购买 nike

我是 C 语言的初学者,最近我阅读了有关逻辑与 && 运算符的内容。

我还知道,在 C 编程语言中,所有非零值都被视为 TRUE

NON-ZERO && NON-ZERO = 1  
NON-ZERO && ZERO = 0
ZERO && NON-ZERO = 0
ZERO && ZERO = 0

但是当我处理以下程序时,我没有得到预期的答案。

int main(){  
int x, y, z;
x = y = z = -1;
y = ++x && ++y && ++z;
printf("x = %d, y = %d, z = %d, x, y, z);
return 0;
}

我很期待

x = 0, y = 0, z = 0 

但答案是

x = 0, y = 0, z = -1

谁能解释一下,为什么我会得到这个答案?

编辑:在这个问题中,我没有询问运算符的优先级。

最佳答案

因为Short-circuit evaluation ,当 x0 时,yz 实际上不需要计算,因为 0 && ANYTHING0

一旦 x 递增到 0,结果就是 0,这就是 y 得到的结果。

z 保持不变 (-1)。


 x  | y  |  z 
----+----+-----
-1 | -1 | -1 //x = y = z = -1;
0 | -1 | -1 //++x && ... Now the whole expression is evaluated to 0
0 | 0 | -1 //y = ++x && ++y && ++z;

关于c - && 在 C 编程语言中的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18229657/

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