如果条件始终为真,为什么编译器会显示以下警告?

时间:2015-07-23 04:37:25

标签: c

#include<stdio.h>
int main()
{    
int a=2;
 if(a==3,4)
  printf("hello");
return 0;
}

警告:条件始终为真 为什么总是如此?

2 个答案:

答案 0 :(得分:4)

,不像您认为的那样有效。

,做的是评估由,按顺序分隔的所有表达式,然后返回最后一个。

那么你的if语句实际上做的是检查返回false的a==3,但它会丢弃这个结果。然后检查if(4),返回true。

基本上你的代码是:

#include<stdio.h>
int main()
{    
    int a=2;
    if(4)
        printf("hello");
    return 0;
}

答案 1 :(得分:-2)

  

a == 3,4

应该是

  

一个== 3.4

十进制用点(。)而不是逗号(,)来表示。 这里的逗号分割指令,就像在for语句中一样:

  

for(int a = 0,int b = 10; b&lt; = 0; a ++,b - )