谁能解释这个C代码的输出?

时间:2019-04-07 13:44:47

标签: c

#include <stdio.h>
void main()
{
    int x = 1, y = 0, z = 5;
    int a = x && y || z++;
    printf("%d", z);
}

在执行时,以下程序将输出预期为6。 但是这个程序

#include <stdio.h>
void main()
{
    int x = 1, y = 0, z = 5;
    int a = x && y && z++;
    printf("%d", z);
}

给出的输出为5。任何人都可以解释此输出。我对增量前和增量后运算符有很好的了解,但无法弄清楚该输出。

1 个答案:

答案 0 :(得分:0)

在C中,在

a = f(x) && g(y)

如果f(x)的值为0,那么无论g(y)是多少,我们都知道a将始终为0。因此,不会评估g(y),并且不会发生g(y)的任何副作用。

对于您而言,这意味着增量永远不会发生。