inta=9,b=8,c=7,x=1;则执行语句if(a>7)if(b>8)if(c>9)x=2;else x=3;后x的值是1,为什么谢谢

如题所述

这种if语句嵌套的话,else语句对应的是最后一个if判断。也就是判断程序的结构是:首先判断是否a>7,如果是,才判断b是否大于8,如果还是判断c是否大于9,如果大于9,x=2;而如果执行到这一步时发现c<=9了,x才被赋值为3。也就是说,如果abc这种取值的话,程序时无法进入最后一个if语句的,也就是if(c>9)x=2;else x=3;是不会被执行的。
我猜想你的原意是只要不满足这些条件,x就要等于3.那么程序可以如下修改:
inta=9,b=8,c=7,x=1;
if(a>7)
{if(b>8)
{if(c>9)
x=2;
else x=3;
}
else x=3;
}
else x=3;
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-11-20
你的语句等同于
int a=9,b=8,c=7,x=1;
if(a>7)
if(b>8)
{
if(c>9) x=2;
else x=3;
}
这样就清晰了吧
b=8,所以根本就没有进入下面的if语句;
所以x依然为1;

如果是只要不满足以上条件,就3赋给x
可以这样
int a=9,b=8,c=7,x=1;
if(a>7&&b>8&&c>9)
x=2;
else
x=3;本回答被提问者采纳
第2个回答  2011-11-20
分析一下你的程序:
当a>7且b>8时:若c>9,x=2;否则x=3.
而默认的a=9,b=8,不符合b>8的这个条件,故以后的if……else语句无法执行。
所以x还是为1.
第3个回答  2011-11-20
你的表的式等介于
if(a>7)
{
if(b>8)
{
if(c>9)
{
x=2;
}
else x=3;
}
}
而b=8,就是第二个if{}中的内容没有执行,于是x还是x。没有{},else默认与最近的一个If匹配。
第4个回答  2011-11-20
else 朝上匹配离他最近的一个if,因为才c=7,不大于9所以不执行if(c>9)。
相似回答