以下程序打印的输出是什么?如何评估if条件表达式?

时间:2018-01-19 03:00:09

标签: c loops if-statement

下面给出的代码段的输出是什么?

int main()
{
    if(0<7<5)
        printf("I am printed");
    else
        printf("I am not printed");
}
  1. 我正在打印
  2. 我没有打印
  3. 编译器错误

2 个答案:

答案 0 :(得分:6)

输出为"I am printed" - 原因是<(小于运算符)是左关联的。结果这将是

(0<7)<5

并且确实如此 - 它将评估为1.因此检查将为1<5,这也是正确的,为您提供所需的结果。

来自standard本身

  

表达式a<b<c不能解释为普通数学。如   语法表明,它意味着(a<b)<c;换句话说,如果a更少   比b,将1c进行比较;否则,请将0c进行比较。

答案 1 :(得分:2)

“我打印”将在此功能中打印。

(0<7<5)  =>  (0<7)<5  =>  1<5  => true.