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;
}