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

int a=3,c=0;
判断(a+=2)&&(c=0)在C语言中的真假?为什么?请说明理由!

第1个回答  2007-01-27
首先,这样用表达式作为判断语句非常不好。一般不会这样使用。
对于这个题目,它会把赋值语句的最终赋的值作为结果,所以这和a的初值有关系。在此题中,a的初值为3,再将其+2,得5,不为0,则是真,对于c直接赋值为0,此处的0则作为判断对象,故为假。
如果将c的值改赋为1,则此判断句为真,在此基础上如果将a的初值改为-2,则又为假,明白我什么意思了吗?
第2个回答  2007-01-27
类似于 if ( (a+=2) && (c=0) ) ....这样的表达方式是非常不妥的。因为无论a+=2还是c=0本身都是一个赋值语句而不是表达式,而一个赋值语句的返回值是没有意义的。因此难以判断是真是假,在不同的机器上使用不同的编译器编译,可能结果不同。象这样写程序就弄不清楚你注重的到底是判断条件,还是条件内部的变量赋值。这种程序将来很难维护,因为副作用太强。最起码来说,第一行中对c的初始值说明完全没有起到作用,因为还没等使用就被马上重新赋值了。严格地说,该判断条件(包括其副作用)应写为
a+=2;
c=0;
if ((a!=0) && (c==0))....本回答被网友采纳
第3个回答  2007-01-27
楼上有几位回答的人估计都是学vb的,看清楚要求
搂主已经说了是在C语言中判断

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

错误2: " 一个赋值语句的返回值是没有意义的"
更正 :c语言中一个赋值语句的返回值就是最左边的值,所以赋值的返回就是a 和 c
所以 判断后应该是 true&&false
第4个回答  2007-02-03
你的语句有误,如果真要判断应写为
if((a==(a+2))&&(c==0))才对,等于号是要双等于,这样写就是
假&&真,结果为假
你要实在这样写,那么我们就按赋值来说
a+=2就是5这是真,c=0这是假
那就是真&&假为假
第5个回答  2007-01-27
a+=2既a=a+2所以是假
c=0是真
&&有一个是假结果就是假

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网