【问题标题】:please explain the output of this [duplicate]请解释这个[重复]的输出
【发布时间】:2015-03-28 23:16:58
【问题描述】:

我正在尝试 c 编程,我写了一个小代码,但我无法理解这个

#include<stdio.h>
int main()
{

    int x,y,z,k;
    x=y=z=k=1;

    z=x++||y++&&k++;
    printf("%d %d %d %d\n",x,y,z,k);
}

我期望输出为 2 1 1 2 因为 && 的优先级大于 || 但输出是 2 1 1 1 请解释一下。

【问题讨论】:

    标签: c operators logical-operators


    【解决方案1】:

    C 使用short-circuit evaluation,所以当x++ 被计算为true 时,剩余的表达式不会被计算,并且不会发生增量。

    【讨论】:

    • 但是 && 的优先级高于 ||所以 (x++||y++) 和 k++ 都应该被评估,我同意 y++ 不会被完成,因为 x++ 是真的,但是 k++ 应该被正确地完成?
    • 不。 x++ 评估为 true 就足够了。无需对|| 的右手部分做任何事情。这个答案是正确的。
    • @maneeshbhunwal;阅读此answer
    猜你喜欢
    • 2021-06-21
    • 1970-01-01
    • 2012-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多