基本上情况一样,假设在if中不修改i的值的话。但如果在if中修改i的值就不一样了。
第一种情况是 三个if都可能执行,但第二种情况只会执行其中的一个if。
例如:
i=11时,下面程序虽然看起来很无聊,但是确实可能存在的:
if(i>10)
{
i =9;
}
if(i<10)
{
i=8;
}
则这两个if都会执行,最后i=8了。
但是
if(i>10)
{
i=9;
}
else if(i<10)
{
i=8;
}
则只会执行if,不会执行else if,两个是互斥的。最后i=9.
不一样,例子中如果i大于10成立,前者会进行三次条件判断运算i>10,i<10和i==0(应是双等号)
后例只判断i>10,后面的两个判断因为是else if而不进行判断了,属于i>10的另外一个分支
从效果上来看,这两个例子的作用相同,但是因为这三个条件是互斥的才会这样(最后的i==10判断可省略),如果条件不是互斥的就会导致运行效果的很大不同
else if相当于
if()
{
}
else
{
if()
{
}
}
你要判断i的数值区间时,如果只使用if 那么无论i的数值如何都要判断三次。
如果使用if...else...那么如果i大于10,只用判断1次。
i小于10只用判断2次。
i等于10判断3次。
不过你的程序如果是
if (i> 10)
{
}
else if(i<10)
{
}
else
{
}
i等于10就只需要判断两次
不一样的,第一种任何一个值都要判断三次,而第二种如果i>10,则只判断一次,如果i<10,则判断两次,如果i=10,则判断三次,效率不一样,而且第二种看起开更清晰不是嘛。