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