gpt4 book ai didi

c - C 上的短路评估

转载 作者:行者123 更新时间:2023-12-03 23:13:50 25 4
gpt4 key购买 nike

我正在从 Kelley-Pohl 的 A Book on C 中学习 C,有一个我不明白的练习:

int a = 0, b = 0, x;

x = 0 && (a = b = 777);
printf("%d %d %d\n", a, b, x);
x = 777 || (a = ++b);
printf("%d %d %d\n", a, b, x);
他们只是说想象输出并将其与真实输出进行比较。我以为输出会是

777 777 0

778 778 1


但它是

0 0 0

0 0 1

最佳答案

&&运算符(operator)使用 lazy evaluation .如果任一侧&&运营商是 false ,则整个表达式为 false .

C 检查运算符左侧的真值,在您的情况下为 0 .自 0在 c 中为假,则操作的右侧表达式,(a = b = 777) , 永远不会被评估。

第二种情况类似,除了 ||返回 true如果左侧表达式返回 true .还要记住,在 c 中,任何不是 0 的东西被认为 true .

希望这可以帮助。

关于c - C 上的短路评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45848858/

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