【问题标题】:Why my code outputs false, what happens at if(c>b>a)? [duplicate]为什么我的代码输出错误,如果(c>b>a)会发生什么? [复制]
【发布时间】:2014-07-13 15:21:08
【问题描述】:
#include <stdio.h>

int main() {
int a = 10, b = 20, c = 30;
if (c > b > a)
    printf("TRUE");
else
    printf("FALSE");
return 0;
}

if(c>b>a) 会发生什么,我知道这就像 if((c>b)>a),但为什么会是假的?

【问题讨论】:

  • c &gt; b 为 1 或 0(在您的情况下为 1)。你想要c &gt; b &amp;&amp; b &gt; a。
  • 你会如何评价 ((c>b)>a) ?

标签: c operators


【解决方案1】:

运算符 &gt; 是左关联的,因此 c &gt; b &gt; a 将用括号括起来为 ((c &gt; b) &gt; a) 。由于30 大于20,c &gt; b = 1。所以,

 (c > b) > a => (1 > a) => 1 > 10 => false

【讨论】:

    【解决方案2】:

    c&gt;b 计算结果为 1,不大于 10。

    【讨论】:

      【解决方案3】:

      c &gt; b &gt; a 表示

      (c &gt; b) &gt; a 在您的情况下是错误的..

      【讨论】:

        猜你喜欢
        • 2017-06-11
        • 1970-01-01
        • 2018-11-29
        • 1970-01-01
        • 2011-09-19
        • 1970-01-01
        • 2020-05-02
        • 2022-12-12
        • 2017-02-08
        相关资源
        最近更新 更多