Nie są one pojedynczym słowem kluczowym, jeśli przejdziemy do roboczej wersji standardowej sekcji C ++ Tabela 2.12
słów kluczowych4
zawiera zarówno listę słów kluczowych, jak if
i else
osobno i nie ma tam żadnego else if
słowa kluczowego. Bardziej przystępną listę słów kluczowych C ++ możemy znaleźć, przechodząc do sekcji cppreferences na temat słów kluczowych .
Gramatyka w sekcji 6.4
również to wyjaśnia:
selection-statement:
if ( condition ) statement
if ( condition ) statement else statement
if
W else if
to oświadczenie zgodnie z else
terminem. Sekcja mówi również:
[...] Podstatunek w instrukcji selekcji (każdy podstacji, w
innej postaci instrukcji if ) niejawnie definiuje zakres blokowy (3.3). Jeśli podstacja w instrukcji selekcji jest pojedynczą instrukcją, a nie instrukcją złożoną , to wygląda na to, że została przepisana na instrukcję złożoną zawierającą pierwotne podstawienie.
i podaje następujący przykład:
if (x)
int i;
can be equivalently rewritten as
if (x) {
int i;
}
Jak więc analizowany jest twój nieco rozszerzony przykład?
if
statement_0;
else
if
statement_1;
else
if
statement_2 ;
zostanie przeanalizowany w ten sposób:
if
{
statement_0;
}
else
{
if
{
statement_1;
}
else
{
if
{
statement_2 ;
}
}
}
Uwaga
Możemy również stwierdzić, że else if
nie może to być jedno słowo kluczowe, zdając sobie sprawę, że słowa kluczowe są identyfikatorami i możemy zobaczyć na podstawie gramatyki identyfikatora w mojej odpowiedzi na pytanie Czy możesz rozpocząć nazwę klasy od cyfry? że spacje nie są dozwolone w identyfikatorach i dlatego else if
nie mogą być pojedynczym słowem kluczowym, ale muszą być dwoma oddzielnymi słowami kluczowymi .
else if