嵌套if和&&amp ;?之间有什么区别?

时间:2013-08-06 11:21:13

标签: c if-statement

写作之间有什么区别:

if(condition1 && condition2){
    //some code
}

if(condition1){
    if(condition2){
        //some code
    }
}

如果有,哪一个更好?

10 个答案:

答案 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 codecondition1评估为非零(condition2)时,才会执行true

答案 7 :(得分:1)

第一个if(condition 1 && condition 2),只能包含一个else部分,假设您的代码在两个条件都正确或两者都错误的情况下工作。在另一部分中,你可以有两个其他部分,每个部分用于每个条件的失败,从而增加了问题的范围。

答案 8 :(得分:0)

他们做同样的事情并以相同的顺序进行评估。

答案 9 :(得分:0)

对我来说没有什么特别的,但第二个让代码更嵌套,我想一般避免。两者都有相同的效果。