Jestem nowy w C ++. Często widzę warunkowe oświadczenie, jak poniżej:
if
statement_0;
else if
statement_1;
Pytanie:
Składniowo , czy należy traktować else if
jako jedno słowo kluczowe? A może jest to faktycznie zagnieżdżona if
instrukcja w zewnętrznej, else
jak poniżej?
if
statement_0;
else
if
statement_1;
c++
syntax
language-lawyer
modelarz
źródło
źródło
else if
elseif
iELIF
. W rzeczywistości tylko (?) Język programowania Algol68 dopuszcza spację w identyfikatorze; też miło:PROC walk through tree ()
elseif
Kluczowe istnieje w VB i PHP.long double
musisz to napisać w ten sposób.longdouble
jest nieprawidłowe.Odpowiedzi:
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, jakif
ielse
osobno i nie ma tam żadnegoelse 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:if
Welse if
to oświadczenie zgodnie zelse
terminem. Sekcja mówi również:i podaje następujący przykład:
Jak więc analizowany jest twój nieco rozszerzony przykład?
zostanie przeanalizowany w ten sposób:
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 dlategoelse if
nie mogą być pojedynczym słowem kluczowym, ale muszą być dwoma oddzielnymi słowami kluczowymi .źródło
jeq
(if
|else if
),jne
(if
|else if
),jmp
(else
). Opierając się na tym, powiedziałbym, że to jedno słowo kluczowe… prawdopodobnie nie syntaktycznie, ale pod względem instrukcji.else if
, ale zamiast tegoelsif
. W tych językachelse if
to naprawdę jedno słowo kluczowe. Jednak języki oparte na C generalnie nie, jak stwierdzono w tej odpowiedzi.else
oświadczenie. Też bym to docenił.Składniowo nie jest to pojedyncze słowo kluczowe; słowa kluczowe nie mogą zawierać spacji. Logicznie rzecz biorąc, pisząc listy
else if
, prawdopodobnie lepiej będzie , jeśli zobaczysz to jako jedno słowo kluczowe i napisz:Kompilator widzi to dosłownie jako:
ale obie formy prowadzą do tego samego, a pierwsza jest o wiele bardziej czytelna.
źródło
else
po którym następujecompound-statement
. Poelse
, Poszukajstatement
(co może być takie jakreturn;
lubf()
) lubcompound-statement
...Nie, nie jest.
Są to dwa słowa kluczowe, a ponadto drugie „if” jest podrzędnym elementem „wewnątrz” zakresu określonego przez pierwszą instrukcję „else”.
źródło
Możesz zobaczyć zakres, używając nawiasów klamrowych:
Zwykle implementowane z dwoma różnymi słowami kluczowymi, jedno to if, a drugie to else .
źródło
if-statement
kończy się fakultatywnieelse-clause
.else-clause
Jest alboelse code-block
alboelse if-statement
.code-block
zawiera obowiązkowe szelki. Dlatego poelse
słowie kluczowym można umieścić tylko{
lubif
.else { if ... }
”.Jak już odpowiedziałem, nie jest. To dwa słowa kluczowe. To początek dwóch zdań, które następują po sobie. Aby było to trochę jaśniejsze, oto gramatyka BNF, która dotyczy
if
ielse
oświadczeń w języku C ++.Zwróć uwagę, że
statement
samo obejmujeselection-statement
. Tak więc kombinacje takie jak:są możliwe i poprawne zgodnie ze standardem / semantyką C ++.
Uwaga: gramatyka C ++ pochodzi z tej strony.
źródło
else i if to dwa różne słowa kluczowe C ++ . Po instrukcji if może następować opcjonalna instrukcja else if ... else . Jeśli oświadczenie może mieć zero lub więcej else if „s i muszą one pochodzić zanim jeszcze .
Możesz znaleźć składnię i przykład w tym samouczku instrukcji if ... else
źródło
Chciałbym tylko dodać swój punkt widzenia do wszystkich tych wyjaśnień. Jak widzę, jeśli możesz użyć tych słów kluczowych oddzielnie, muszą to być DWA słowa kluczowe. Może możesz rzucić okiem na gramatykę C ++, korzystając z tego linku w stackoverflow: Czy istnieje standardowa gramatyka C ++?
pozdrowienia
źródło
Po instrukcji if może następować opcjonalna instrukcja else if ... else, która jest bardzo przydatna do testowania różnych warunków przy użyciu pojedynczej instrukcji if ... else if.
Używając instrukcji if, else if, else, należy pamiętać o kilku kwestiach.
zobacz instrukcję instrukcji if ... else .
źródło
else if
tak, jakby był słowem kluczowym, więc nie ma sensu definiować go bezpośrednio.