"if....else if....else" 可不可以用"if....if....else"代替?
因为我发现用多个 "if "代替 "if "& "else if "的结构,执行结果似乎是一致的,而我也没找到它们有什么不同:
第一种写法:
if(条件1)
{
...
}
else if(条件2)
{
...
}
else //其他情况
{
...
}
第二种写法:
if(条件1)
{
...
}
if(条件2)
{
...
}
else //其他条件
{
...
}
但几乎所有人都用else if这样的写法,说明else if很可能是不能完全被if替代的,那么上面两种写法什么情况下结果会不一致呢?
[解决办法]
前一种比较的次数少一些.
[解决办法]
第一种写法,当条件1满足后,不会再去测试后面的条件.
第二种写法,当条件1满足后,还会再去测试后面的条件.
[解决办法]
这样可以看出它们的区别:
bool f1(){cout < < "f1 " < <endl;return 1;}
bool f2(){cout < < "f2 " < <endl;return 1;}
bool f3(){cout < < "f3 " < <endl;return 1;}
bool f4(){cout < < "f4 " < <endl;return 1;}
int main1()
{
if(f1())
{}
else if(f2())
{}
else if(f3())
{}
else if(f4())
{}
else
{cout < < "==== " < <endl;}
return 0;
}
int main2()
{
if(f1())
{}
if(f2())
{}
if(f3())
{}
if(f4())
{}
else
{cout < < "==== " < <endl;}
return 0;
}