Sie sind nicht ein einziges Schlüsselwort ein, wenn wir zu der gehen Entwurf C ++ Standard Abschnitt 2.12
Keywords Tabelle 4
listet sowohl if
und else
getrennt und es gibt kein else if
Schlü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.4
macht dies auch deutlich:
selection-statement:
if ( condition ) statement
if ( condition ) statement else statement
Das if
in else if
ist eine Aussage nach dem else
Begriff. 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 if
sich 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 if
kein einzelnes Schlüsselwort sein, sondern müssen zwei separate Schlüsselwörter sein .
else if