【问题标题】:why the condition x!=15 is evaluating as true giving the output 1 [duplicate]为什么条件 x!=15 评估为真给出输出 1 [重复]
【发布时间】:2020-12-28 15:30:39
【问题描述】:
int x = 15 ;
printf ("\n%d %d %d", x != 15, x = 20, x < 30 ); 

我正在学习 C 并解决伪代码。我试图解决它,我的答案是0 20 1, 但是当我尝试编译并检查答案是1 20 1。 有人能解释一下为什么会这样吗?

当我尝试将条件交换为printf ("\n%d %d %d", x = 20,x != 15, x &lt; 30 ); 时,我得到的答案是20 0 1

为什么会这样?

【问题讨论】:

  • 这不仅仅是评估问题的顺序。 x = 20 与其他参数中 x 的无关值访问无关。此代码调用未定义的行为。

标签: c operators


【解决方案1】:

函数参数的求值顺序未指定。因此,如果您有一个表达式改变了一个变量的值,该变量在条件检查中显示为其他参数,则无法保证结果。

【讨论】:

    猜你喜欢
    • 2017-04-28
    • 2021-11-01
    • 1970-01-01
    • 2017-12-18
    • 2014-05-19
    • 2018-02-24
    • 2017-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多