假设所有变量均已正确定义,下列程序段运行后y的值是( )
int a=0,y=10;
if(a=0)y-- ; else if(a>0)y++; else y+=y;
A.20 B.11 C.9 D.0
答案选A,为什么?
假设所有变量均已正确定义,下列程序段运行后y的值是( )
int a=0,y=10;
if(a=0)y-- ; else if(a>0)y++; else y+=y;
A.20 B.11 C.9 D.0
答案选A,为什么?
主要在于if(a=0) 是先将a赋值为0,然后判断a是否为真.
if(a=0)y-- ; //运行时.判断if(a=0) 直接将a赋值为0. 因为a赋值为0所以表达式结果为假. 执行else
else if(a>0)y++; //因为上面将a赋值为0. 所以else if(a>0)表达式结果为假. 执行下一个else
else y+=y; //执行y=y+y.
所以y就等于20;
要注意的是=是赋值. ==才是判断是否相等.
因为:第一个if语句中是: a=0是赋值语句 而不是a==0 所以相当于:if(0) 因此y-- 是不会执行的,
又因为:a=0了 不不大于0所以y++也不会执行 所以只有执行:y+=y了 即:y=10+10=20
因为if(a=0)里的条件,是0 (false)所以,y--不会执行
因为a=0,所以a>0也是false,if(a>0)的y++也不会执行
那么执行的是y+=y,也就是y=y+y=10+10=20
所以选A
不会吧,怎么可能选A啊???
是不是答案搞错了。这个题应该选c啊。是9啊!答案搞错了!