gpt4 book ai didi

c - 我无法理解这个 c 编程的输出。请任何人帮助

转载 作者:太空狗 更新时间:2023-10-29 15:11:39 25 4
gpt4 key购买 nike

#include <stdio.h>

int main () {
int x, y, z;

x = y = z = 1;
++x || ++y && ++z;
printf ("x = %d\t y = %d\tz = %d\n", x, y, z);
//op : x = 2 y = 1 z = 1
//why is 'x' only incrementd?

x = y = z = -1;
++x || ++y && ++z;
printf ("x = %d\t y = %d\tz = %d\n", x, y, z);
//op : x = 0 y = 0 z = -1
//why are 'x' and 'y' incremented?

x = y = z = 1;
++x && ++y || ++z;
printf ("x = %d\t y = %d\tz = %d\n", x, y, z);
//op : x = 2 y = 2 z = 1
//why is 'x' only incrementd?

x = y = z = -1;
++x && ++y || ++z;
printf ("x = %d\t y = %d\tz = %d\n", x, y, z);
//op : x = 0 y = -1 z = 0
//why are 'x' and 'z' incremented?

//Does this incrementation depend on the value stored in the variable?
}

最佳答案

原因是&&||短路

也就是说,一旦他们知道 bool 表达式的最终结果是什么,他们就会停止求值。

所以,如果你执行 1 || x++,那么 x 永远不会递增,因为任何非零 bool 值都是真值。

同样,如果您执行 0 && x++x++ 也永远不会执行。

另见:

关于c - 我无法理解这个 c 编程的输出。请任何人帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6534925/

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