Code Bye

关于= 和==

int a = 1;
if(a =2)
{
    printf("YES");
}

本人理解C语言中 非0即真,但是这个表达式中是个赋值语句,这个IF判断的是A的值吗?A = 2,然后就输出YES了?

解决方案

2

对的

4

if (a = 2)
等同于:
a = 2;
if (a)

1

是的,非零既是真。

1

上面的代码会一直输出yes,感觉是不是少打了个=号
if(a= =2)//这样正常点吧
{
printf(“YES”);
}

2

建议比较时写成 if (2 == a)
这样就算错写成if (2 = a),编译器会报错提醒

2

这样是能成功啊~只是把a做为判断条件,而不是为a的值做判断~噗哈哈~蛮有意思的其实~

5

C ,C++,一般来说,
像这样有副作用的表达式,表达式本身有个值,
求这个值,是表达式求值的主要作用(
虽然直观看来,
这个值很多时候没啥用途)。
副作用会对某个子表达式产生影响,使之变化。

3

if(a =2)执行后,本人感觉和if(2)差不多吧,真假理解为if(1)了,

2

表达式的值和操作符的副作用

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于= 和==