C语言if问题求解 假定所有变量均已正确说明,下列程序段运行后x的值是 。 a=b

C语言if问题求解
假定所有变量均已正确说明,下列程序段运行后x的值是 。
a=b=c=0;x=35;
if(!a) x=x-1;
else if(b);
if(c) x=3;
else x=4;
答案是4为什么?

前面的不管

if(c) x=3;
else x=4; 时,由于 C = 0 ,为 FALSE 所以走 else
X=4 是个简单赋值操作,因此,不管之前x 是多少,走了这个流程以后,就是 4了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-11-13

请看如下注释过的代码:

int a=b=c=0;
int x=35; 
if(!a)x=x-1;//a=0 此if进来后 x=34了
else if(b); //空语句 直接过
if(c)  x=3; //由于 c=0 所以此if进不去走else 所以最后 x=4
else  x=4;

追问

也就是说即使有很多if都对,只输出最后一个对的if?

追答

if 没有对与错之分,
if的用法是只要括号里的表达式为真 则会执行后面的语句
你的第一个if(!a) 这个!a 为真 所以后面的x=x-1执行了
if(c) 由于c=0 给表达式不为真 所以x=3不执行则会走紧跟的else

第2个回答  2014-11-13
//最后两行必有一行对x进行赋值, 所以前面两行可以忽略不看.(因为if(b)后面有个分号) 
//即等价于:  
if(0) x=3;  
else x=4;

所以最终执行的语句是:  x=4;

第3个回答  2014-11-13
当然是执行z=x+y呀,因为是进了if语句才开始的循环,可以调试一下试试 要多调试
请采纳答案,支持我一下。
第4个回答  2014-11-13
因为c为,运行最后一个else所以为4追答

因为c为0,运行最后一个else所以为4

追问

if(!a)不是对的吗?为什么不执行x=x-1?

追答

执行了

但是这里有两个if代码段

2-3一个
4-5一个
注意看