C ++標準のドラフトセクションの「2.12
キーワードテーブル」4
に両方if
をelse
個別にリストし、キーワードがない場合、これらは単一のキーワードではありませんelse if
。私たちは、C ++のよりアクセスリストを見つけることができますキーワードをに行くことによってキーワードにcppreferencesセクション。
セクションの文法6.4
もこれを明確にします:
selection-statement:
if ( condition ) statement
if ( condition ) statement else statement
if
中には、else if
ある文で、次のelse
用語を。このセクションでは、次のようにも述べています。
[...] selection-statementのサブステートメント(ifステートメントのelse形式の各サブ
ステートメント)は、ブロックスコープ(3.3)を暗黙的に定義します。selection-statementのサブステートメントが単一のステートメントであり、compound-statementではない場合、それは、元のサブステートメントを含む複合ステートメントに書き直されたかのようになります。
次の例を示します。
if (x)
int i;
can be equivalently rewritten as
if (x) {
int i;
}
では、少し拡張した例はどのように解析されますか?
if
statement_0;
else
if
statement_1;
else
if
statement_2 ;
このように解析されます:
if
{
statement_0;
}
else
{
if
{
statement_1;
}
else
{
if
{
statement_2 ;
}
}
}
注意
キーワードが識別子であることをelse if
理解することで、1つのキーワードにできないことも判断できます。また、数字の数字でクラス名を開始できますか?への私の回答で識別子の文法から確認できます。スペースはで許可されていないこと、識別子とそのため、一つのことができないキーワードが、2つの別々でなければならないキーワード。else if
else if