int a = 1; if(a =2) { printf("YES"); }
本人理解C语言中 非0即真,但是这个表达式中是个赋值语句,这个IF判断的是A的值吗?A = 2,然后就输出YES了?
解决方案
2
对的
4
if (a = 2)
等同于:
a = 2;
if (a)
等同于:
a = 2;
if (a)
1
是的,非零既是真。
1
上面的代码会一直输出yes,感觉是不是少打了个=号
if(a= =2)//这样正常点吧
{
printf(“YES”);
}
if(a= =2)//这样正常点吧
{
printf(“YES”);
}
2
建议比较时写成 if (2 == a)
这样就算错写成if (2 = a),编译器会报错提醒
这样就算错写成if (2 = a),编译器会报错提醒
2
5
C ,C++,一般来说,
像这样有副作用的表达式,表达式本身有个值,
求这个值,是表达式求值的主要作用(
虽然直观看来,
这个值很多时候没啥用途)。
副作用会对某个子表达式产生影响,使之变化。
像这样有副作用的表达式,表达式本身有个值,
求这个值,是表达式求值的主要作用(
虽然直观看来,
这个值很多时候没啥用途)。
副作用会对某个子表达式产生影响,使之变化。
3
if(a =2)执行后,本人感觉和if(2)差不多吧,真假理解为if(1)了,
2
表达式的值和操作符的副作用