代码之家  ›  专栏  ›  技术社区  ›  Daniel

c语言中的控制流语法++

  •  2
  • Daniel  · 技术社区  · 15 年前

    使用下面的c++示例(缩进是故意省略的)。

    if(condA)          // if #1
    if(condB)          // if #2
    if(condC)          // if #3
    if(condD)          // if #4
    funcA();
    else if(condD)     // else #1 if #5
    funcB();
    else if(condE)     // else #2 if #6
    funcC();
    else               // else #3
    funcD();
    else if(condF)     // else #4 if #7
    funcE();
    else               // else #5
    funcF();
    

    什么 else 指什么 if 这有什么规定(是的,我知道 { } 会解决这个问题)。

    6 回复  |  直到 15 年前
        1
  •  1
  •   jpalecek    15 年前

    DeadMG是对的。万一你有兴趣,规则是

    else 没有相应的(其他) if .

        2
  •  5
  •   Puppy    15 年前
    if(condA)          // if #1
        if(condB)          // if #2
            if(condC)          // if #3
                if(condD)          // if #4
                    funcA();
                else if(condD)     // else #1 if #5
                    funcB();
                else if(condE)     // else #2 if #6
                    funcC();
                else               // else #3
                    funcD();
            else if(condF)     // else #4 if #7
                funcE();
            else               // else #5
                funcF();
    
        3
  •  3
  •   sth    15 年前

    else if 可能吧。

    if (a)
    if (b) B;
    else C;
    

    相当于

    if (a) {
      if (b) B;
      else C;
    }
    
        4
  •  1
  •   C.J.    15 年前

    不要在生产环境中编写这样的代码。它会咬你的。

        5
  •  0
  •   Ira Baxter    14 年前

    C++知道哪些匹配,如果和C++编译器有好的分析器在Flash中排序。问题在于 你不擅长这个。

    通过一个 C++ prettyprinter 结果格式化文本将使其非常清晰。

        6
  •  0
  •   Jaime    14 年前

    这就是所谓的“悬空”问题。解决这个问题的惯例是将“else”附加到最近的“if”语句。

    Dangling else wikipedia

    推荐文章