【问题标题】:Can anyone explain the output of this C code? [duplicate]谁能解释这个 C 代码的输出? [复制]
【发布时间】:2019-04-07 13:44:47
【问题描述】:
#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。任何人都可以解释这个输出。我对 pre-increment 和 post-increment 运算符有很好的理解,但无法弄清楚这个输出。

【问题讨论】:

    标签: c


    【解决方案1】:

    在 C 中,在

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

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

    在你的情况下,这意味着增量永远不会发生。

    【讨论】:

    猜你喜欢
    • 2012-06-21
    • 2021-02-27
    • 2021-04-24
    • 1970-01-01
    • 1970-01-01
    • 2018-01-12
    • 1970-01-01
    • 1970-01-01
    • 2018-08-22
    相关资源
    最近更新 更多