(a+=2)&&(c=0)在C语言中的真假?

来源:百度知道 编辑:UC知道 时间:2024/06/29 21:19:29
int a=3,c=0;
判断(a+=2)&&(c=0)在C语言中的真假?为什么?请说明理由!

类似于 if ( (a+=2) && (c=0) ) ....这样的表达方式是非常不妥的。因为无论a+=2还是c=0本身都是一个赋值语句而不是表达式,而一个赋值语句的返回值是没有意义的。因此难以判断是真是假,在不同的机器上使用不同的编译器编译,可能结果不同。象这样写程序就弄不清楚你注重的到底是判断条件,还是条件内部的变量赋值。这种程序将来很难维护,因为副作用太强。最起码来说,第一行中对c的初始值说明完全没有起到作用,因为还没等使用就被马上重新赋值了。严格地说,该判断条件(包括其副作用)应写为
a+=2;
c=0;
if ((a!=0) && (c==0))....

你的语句有误,如果真要判断应写为
if((a==(a+2))&&(c==0))才对,等于号是要双等于,这样写就是
假&&真,结果为假
你要实在这样写,那么我们就按赋值来说
a+=2就是5这是真,c=0这是假
那就是真&&假为假

建议你去我的空间中引用的第一个地址看看!
那里有这方面的介绍,可以让你对c语言有很多新的感受的!!
就是wentao的个人博客,不错的饿!

楼上有几位回答的人估计都是学vb的,看清楚要求
搂主已经说了是在C语言中判断

错误1: "假&&真" "a+=2既a=a+2所以是假 , c=0是真 "
更正: a+= 2 这是true, c=0 这个是false;
在C语言中 = 是赋值,==才是比较.

错误2: " 一个赋值语句的返回值是没有意义的"
更正 :c语言中一个赋值语句的返回值就是最左边的值,所以赋值的返回就是a 和 c
所以 判断后应该是 true&&false

前几位大虾都怎么了,是我看错了还是你们都错了....

"假&&真" ?? !!赋值语句啊,那是!
楼上的是正解(不过这是常识啊)....爆寒

(a==(a+2))&&(c==0)才有意义啊,你写的0直接付给c,一定是假了。