Sie sind nicht ein einziges Schlüsselwort ein, wenn wir zu der gehen Entwurf C ++ Standard Abschnitt 2.12 Keywords Tabelle 4listet sowohl ifund elsegetrennt und es gibt kein else ifSchlüsselwort. Wir können eine zugängliche Liste von C ++ finden Keywords , indem Sie auf cppreferences Abschnitt auf Schlüsselwörter .
Die Grammatik im Abschnitt 6.4macht dies auch deutlich:
selection-statement:
if ( condition ) statement
if ( condition ) statement else statement
Das ifin else ifist eine Aussage nach dem elseBegriff. Der Abschnitt sagt auch:
[...] Die Unteranweisung in einer Auswahlanweisung (jede Unteranweisung in der
else- Form des if Anweisung) definiert implizit einen Blockbereich (3.3). Wenn die Unteranweisung in einer Auswahlanweisung eine einzelne Anweisung und keine zusammengesetzte Anweisung ist , ist es so, als ob sie als zusammengesetzte Anweisung umgeschrieben wurde, die die ursprüngliche Unteranweisung enthält.
und bietet das folgende Beispiel:
if (x)
int i;
can be equivalently rewritten as
if (x) {
int i;
}
Wie wird Ihr leicht erweitertes Beispiel analysiert?
if
statement_0;
else
if
statement_1;
else
if
statement_2 ;
wird wie folgt analysiert:
if
{
statement_0;
}
else
{
if
{
statement_1;
}
else
{
if
{
statement_2 ;
}
}
}
Hinweis
Wir können auch feststellen, dass es else ifsich nicht um ein Schlüsselwort handeln kann, indem wir erkennen, dass Schlüsselwörter Bezeichner sind , und wir können anhand der Grammatik nach einem Bezeichner in meiner Antwort auf Können Sie einen Klassennamen mit einer numerischen Ziffer beginnen beginnen? Diese Leerzeichen sind in Bezeichnern nicht zulässig und können daher else ifkein einzelnes Schlüsselwort sein, sondern müssen zwei separate Schlüsselwörter sein .
else if