gpt4 book ai didi

c - x--c中的操作,为什么b的值在减少并等于 '2',但c的值没有变化

转载 作者:行者123 更新时间:2023-11-30 16:38:21 26 4
gpt4 key购买 nike

#include<stdio.h>
int main()
{
int a = 1, b = 3, c = 1, p;
if ((a || c--) && (c && b--)) printf("%d", b);
printf("%d %d %d", a, b, c);
scanf("%d", &p);
return 0;
}

这个c代码段的输出是--> 2 1 2 1;那么为什么我们的 b 值正在减小并等于“2”,但我们的 c 值没有变化且等于“1”,我无法理解,我认为 c 会是“0”。

最佳答案

a1,因此第一个 (..) 的第二部分不会执行。 c 的值不会改变。

现在c为1,但由于它是true,所以第二条语句b--也被执行。 (因为 b3 它们都是 true)。整个条件表达式的计算结果为 true。这就是为什么结果是 2 1 2 1。

因为在条件表达式中,如果任何表达式结果为真值,则它会短路并且其他表达式不会执行。 || 从左到右工作。

exp1 || exp2 - 如果exp1非零,则exp2将不会被执行。当整个条件评估为 true 时。

但在 && 的情况下,所有表达式都必须为真。

如果 e1 为 true 并且 e2 为 true 并且 e3 为 true,

e1 && e2 && e3 将为 true正确。

如果其中任何一个为 false,则假设 e1e2e3 将不会进一步执行。因为他们的结果不可能使条件成立。

&&|| 都保证从左到右评估。

直觉-

您可以将 ||&&(逻辑或逻辑与)运算符视为惰性运算符。他们将尽可能地工作以了解整个表达式是否为真。

例如a ||乙|| c 其中a = 0, b = 1, c =0<​​..它首先检查a 是真还是假。它发现a是假的。所以还得多检查一下。然后它看到 b 并且它是 1,这是真的 - 然后它不再检查。

&&(逻辑与)相同,但具有虚假值。

这称为短路评估

关于c - x--c中的操作,为什么b的值在减少并等于 '2',但c的值没有变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47518701/

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