使用嵌套的if语句和使用一个有很多参数的long if语句有区别吗?
e.g。
if ( var1 == var2 && var3 == var4 )
{
//do something
}
或
if ( var1 == var2 )
{
if ( var3 == var4 )
{
//do something
}
}
我想知道这样做是否有任何不同?
感谢
答案 0 :(得分:2)
通常,编译器将为这两个变体生成相同或几乎相同的代码。对于支持短路的解释语言(不评估||的第二部分或&&<结果何时确定),它也几乎是一样的。
我的建议是使用代表你想要做的最清楚的表格。
例如,如果我们想检查两个坐标是否匹配:
if (x1 == x2 && y1 == y2)
如果您的代码是这样的话,请填写:
if (country_of_origin == "Sweden")
{
if (today == thursday)
{
...
}
}
可能更有意义......
答案 1 :(得分:2)
第二种样式允许检查是否需要独立于第一个if条件。
例如,如果您需要在额外条件下执行某些操作,其中(var3!= var4)BUT(var1 == var2)仍然存在,则无法执行此操作:
“if(var1 == var2&& var3 == var4)”
因此,您需要以下内容:
if(var1 == var2){
if(var3 == var4){
}
//more code...
//... var3 & var 4 change...
//
if(var3 != var4){
}
}
正如评论者@Solace所说,它只是允许更多的灵活性。
答案 2 :(得分:1)
他们都做同样的事情,但我个人认为嵌套是整洁的,它也允许代码在嵌套if的任何一侧执行,这通常是必需的
if ( var1 == var2 )
{
//do something here based on the first if but before second if
if ( var3 == var4 )
{
//do something
}
//do something here also which may be different based on the nested if result
}
但是如果你不需要这个,那么你的第一个代码可能只需要一个if
答案 3 :(得分:1)
不同的情况需要不同的解决方案:
if ( width == height && width == depth )
{
// Its a cube!
}
if ( x == y )
{
if ( p == q )
{
//do something for when x == y but p == q
} else {
//do something for when x == y but p != q
}
你无法概括应该或不应该使用哪些结构 - 它们在某些情况下都是合适的。
答案 4 :(得分:0)
嗯,这取决于你的病情。如果它与你的相同,那么绝对不需要选择第二种方式。
这是关于编写干净且可读的代码 - 像if (condition1 && condition2)
那样执行此操作,您建议以下两个条件对于以下代码片段是绝对必要的。