读书人

quot;if.else if.elsequot; 可不可以用quot;if.if.

发布时间: 2012-03-16 16:34:56 作者: rapoo

"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;
}

读书人网 >C语言

热点推荐