写作之间有什么区别:
if(condition1 && condition2){
//some code
}
和
if(condition1){
if(condition2){
//some code
}
}
如果有,哪一个更好?
答案 0 :(得分:8)
差异主要在于可读性和维护性。
2个逻辑条件的连接通常应该意味着它们之间存在语义关系。
另一件需要考虑的事情是范围界定。嵌套的if
为您提供了额外的灵活性。
答案 1 :(得分:3)
其他人已经说过需要说些什么了。它们基本相同。第一个是在一个班轮中进行状态检查。第二个可以用于更详细的检查。第二个可以在调试时证明是好的。例如。只需在false case上添加调试操作。以下是我能想到的一个有趣的小例子
if("shell we meet today?" && "would you like some coffee?")
{
//Check both at the same time.
/*
*Sequential order of evaluation for && ensures that
*left hand side operand (condition) gets evaluated first
*/
//take some chocolates with the coffee
}
if("shell we meet today?")
{
//then
//if you want to figure out the options first
if("would you like some coffee?")
{
//take some chocolates with the coffee
}
else if("how about lunch?")
{
//Pizza?
}
else
{
//some fall back scenario?
}
}
答案 2 :(得分:2)
它会对else
&嵌套else if
条件,但除了可读性之外没有区别。
答案 3 :(得分:2)
在第一种情况下,对于任何评估为true的情况,都会执行块中执行的任何代码。
在第二个If语句中,可能存在第一个条件等于true但第二个条件不等于true的情况。并且开发商可能需要:
- 如果满足一个条件,则执行some code
,
- 然后more code
满足第二个条件
- 没有代码如果只满足第二个条件而不是第一个条件(例如:condition1 =球没有死,条件2 =球进入网[其中more code
将在足球比赛中注册进球])
代码:
if(condition1){
//some code
if(condition2){
//more code
}
}
哪个更好?
取决于您使用
的内容答案 4 :(得分:1)
语法 不同和语义 相同。
答案 5 :(得分:1)
每种方式之间没有功能差异。编译器可能会将它们优化为相同的机器代码(尽管不能保证)。
答案 6 :(得分:1)
实际上,没有区别;仅当//some code
和condition1
评估为非零(condition2
)时,才会执行true
。
答案 7 :(得分:1)
第一个if(condition 1 && condition 2)
,只能包含一个else部分,假设您的代码在两个条件都正确或两者都错误的情况下工作。在另一部分中,你可以有两个其他部分,每个部分用于每个条件的失败,从而增加了问题的范围。
答案 8 :(得分:0)
他们做同样的事情并以相同的顺序进行评估。
答案 9 :(得分:0)
对我来说没有什么特别的,但第二个让代码更嵌套,我想一般避免。两者都有相同的效果。