C 如果条件始终为真,为什么编译器会显示以下警告? #包括 int main() { INTA=2; 如果(a==3,4) printf(“你好”); 返回0; }

C 如果条件始终为真,为什么编译器会显示以下警告? #包括 int main() { INTA=2; 如果(a==3,4) printf(“你好”); 返回0; },c,C,警告:条件始终为真 为什么总是这样?这个,不像你想象的那样工作 ,所做的是按顺序计算由,分隔的所有表达式,然后返回最后一个表达式 因此,if语句实际上所做的是检查a==3,它返回false,但会丢弃这个结果。然后检查if(4),返回true 基本上,您的代码是: #include<stdio.h> int main() { int a=2; if(a==3,4) printf("hello"); return 0; } #包括 int main() { INT

警告:条件始终为真
为什么总是这样?

这个
不像你想象的那样工作

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

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

基本上,您的代码是:

#include<stdio.h>
int main()
{    
int a=2;
 if(a==3,4)
  printf("hello");
return 0;
}
#包括
int main()
{    
INTA=2;
如果(4)
printf(“你好”);
返回0;
}
a==3,4

应该是

a==3.4

小数用点(.)而不是逗号(,)表示。 此处的逗号分隔指令,就像在for语句中一样:


对于(inta=0,intb=10;b这已经编译好了,先生,
a
的什么值会导致数字4为假?如果(a==3,4),你写
的意图是什么
?如果你写奇怪的代码,总有一天编译器可能会发疯。听到这个消息我真的很难过。但我想说的是:我倾向于将情感现实主义置于已知的时间和空间法则之上,当你这么做时,奇怪的事情不可避免地会发生。我认为这是非常有趣的。这个答案完全错误。
#include<stdio.h>
int main()
{    
    int a=2;
    if(4)
        printf("hello");
    return 0;
}