据我所知,如果一个“if”块没有提供花括号,则只会将其中的1个语句视为在其内部。例如:
if(..)
statement_1;
statement_2;
不考虑制表符,只有statement_1
被视为在if
块内。
以下代码与此不兼容:
int main ()
{
if(false) // outer - if
if(false) // nested - if
cout << "false false\n";
else if(true)
cout << "true\n";
}
以上代码没有输出任何内容。它应该输出"true"
。
看起来else if
自动嵌套在了外部if
块内。虽然g++ -Wall
会给出警告,但这不是问题的关键。一旦你加上花括号,一切都按预期进行。