Gcc 什么是“最里面的”呢;如果;声明和随函附上的“;如果“是”的话;?

Gcc 什么是“最里面的”呢;如果;声明和随函附上的“;如果“是”的话;?,gcc,Gcc,首先,请允许我发布GCC手册页的截图 第二批演示代码上面的一句话让我感到困惑,它被写为“因此‘else’不可能属于封闭的‘if’”。就我试图了解作者的想法而言,最里面的if语句是if(b)和foo()。当他说“随附的‘如果’”时,他打算提到if(b)。但是如果我的猜测是正确的,演示代码应该是这样的: { if(a) { if(b) foo(); } else

首先,请允许我发布GCC手册页的截图

第二批演示代码上面的一句话让我感到困惑,它被写为“因此‘else’不可能属于封闭的‘if’”。就我试图了解作者的想法而言,最里面的if语句是
if(b)
foo()。当他说“随附的‘如果’”时,他打算提到if(b)。但是如果我的猜测是正确的,演示代码应该是这样的:

    {
       if(a)
          {
             if(b)
                foo();
          }
       else
          bar();
    }
我说得对吗?问题是“封闭的“如果”是什么。

封闭的“如果”是
if
,在其体内另一个(“内部”)if是“封闭的”

使你困惑的句子是正确的。该段指出,您应该如第二个示例中所示插入括号,以获得与第一个示例中相同的结果(但没有来自
gcc
的警告)

如果您希望获得示例1缩进所建议的代码,那么您的示例将是正确的

现在这个句子的意思是:在示例1中,
else
子句属于内部的
if
,但这可能只是偶然的(当您的示例中的行为是需要的时候)。 当您按照示例2中的方式编写代码时,“不可能”您会想到这一点。

封闭的if是
if
,其主体中的另一个(“内部”)if是“封闭的”

使你困惑的句子是正确的。该段指出,您应该如第二个示例中所示插入括号,以获得与第一个示例中相同的结果(但没有来自
gcc
的警告)

如果您希望获得示例1缩进所建议的代码,那么您的示例将是正确的

现在这个句子的意思是:在示例1中,
else
子句属于内部的
if
,但这可能只是偶然的(当您的示例中的行为是需要的时候)。 当您按照示例2中的方式编写代码时,“不可能”是您想要的

就我试图了解作者的想法而言,最里面的if语句是if(b)和foo()

对。而
else
是它的一个子句,而不是随附if的子句

当他说“随附的‘如果’”时,他打算提到if(b)

不。他/她正在讨论一种方法,以明确
else
属于最里面的if,而不是封闭的if。对编译器清除,也就是说,这样它就不会抛出此警告

除此之外,这两个例子在功能上是相同的。唯一的区别是一个人会引起警告。带大括号的版本在功能上与这两个版本不同——它使
else
成为包含
if(a)
的子句

就我试图了解作者的想法而言,最里面的if语句是if(b)和foo()

对。而
else
是它的一个子句,而不是随附if的子句

当他说“随附的‘如果’”时,他打算提到if(b)

不。他/她正在讨论一种方法,以明确
else
属于最里面的if,而不是封闭的if。对编译器清除,也就是说,这样它就不会抛出此警告


除此之外,这两个例子在功能上是相同的。唯一的区别是一个人会引起警告。带大括号的版本在功能上与这两个版本不同——它使
else
成为包含
if(a)

-if(b)的子句。附上的是另一个:-如果(a)。为什么我的问题迁移到这里?上面写着“11分钟前从unix.stackexchange.com迁移过来的”。这是离题的。@user43312编程仅在涉及shell脚本或API/系统接口时才在unix.stackexchange.com上进行。其他编程问题都在这里。@Tim,好的,第一次来这里。-如果(b)。附上的是另一个:-如果(a)。为什么我的问题迁移到这里?上面写着“11分钟前从unix.stackexchange.com迁移过来的”。这是离题的。@user43312编程仅在涉及shell脚本或API/系统接口时才在unix.stackexchange.com上进行。其他编程问题都在这里。@Tim,好的,第一次来这里。@glodilocks。谢谢我注意到
这通常不是程序员所期望的
,因此编码为程序员的期望。“我希望我是合理的。”格洛迪克说。谢谢我注意到
这通常不是程序员所期望的
,因此编码为程序员的期望。我希望我是合理的。