Ich bin neu in C ++. Ich sehe oft bedingte Aussagen wie folgt:
if
statement_0;
else if
statement_1;
Frage:
Soll ich syntaktischelse if
als ein einzelnes Schlüsselwort behandeln? Oder ist es tatsächlich eine verschachtelte if
Anweisung innerhalb des Äußeren else
wie unten?
if
statement_0;
else
if
statement_1;
c++
syntax
language-lawyer
Modellbauer
quelle
quelle
else if
elseif
undELIF
. Tatsächlich erlaubt nur (?) Die Programmiersprache Algol68 ein Leerzeichen in einem Bezeichner; schön auch:PROC walk through tree ()
elseif
Schlüsselwort existiert in VB und PHP.long double
Sie das so schreiben.longdouble
ist falsch.Antworten:
Sie sind nicht ein einziges Schlüsselwort ein, wenn wir zu der gehen Entwurf C ++ Standard Abschnitt
2.12
Keywords Tabelle4
listet sowohlif
undelse
getrennt und es gibt keinelse 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:Das
if
inelse if
ist eine Aussage nach demelse
Begriff. Der Abschnitt sagt auch:und bietet das folgende Beispiel:
Wie wird Ihr leicht erweitertes Beispiel analysiert?
wird wie folgt analysiert:
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 daherelse if
kein einzelnes Schlüsselwort sein, sondern müssen zwei separate Schlüsselwörter sein .quelle
jeq
(if
|else if
),jne
(if
|else if
),jmp
(else
). Auf dieser Grundlage hätte ich gesagt, dass es sich um ein einzelnes Schlüsselwort handelt. Wahrscheinlich nicht syntaktisch, sondern in Bezug auf Anweisungen.else if
, sondernelsif
. In diesen Sprachenelse if
ist wirklich ein Schlüsselwort. C-basierte Sprachen tun dies jedoch im Allgemeinen nicht, wie in dieser Antwort angegeben.else
Erklärung sehen. Das würde ich auch schätzen.Syntaktisch ist es kein einzelnes Schlüsselwort. Schlüsselwörter dürfen keine Leerzeichen enthalten. Logischerweise ist es beim Schreiben von Listen von
else if
wahrscheinlich besser, wenn Sie es als ein einzelnes Schlüsselwort sehen und schreiben:Der Compiler sieht dies buchstäblich als:
aber beide Formen kommen zur gleichen Sache heraus, und die erste ist viel besser lesbar.
quelle
else
gefolgt von acompound-statement
. Nach einemelse
, Es sucht nachstatement
(was wiereturn;
oder sein könntef()
) oder einemcompound-statement
...Nein ist es nicht.
Es handelt sich um zwei Schlüsselwörter, und außerdem ist das zweite "if" eine Unteraussage "innerhalb" des Bereichs, der durch die erste "else" -Anweisung bestimmt wird.
quelle
Sie können den Bereich mit geschweiften Klammern anzeigen:
Und normalerweise mit zwei unterschiedlichen Schlüsselwörtern implementiert, eines ist if und eines ist else .
quelle
if-statement
endet mit einem optionalenelse-clause
. Einelse-clause
ist entwederelse code-block
oderelse if-statement
.code-block
enthält obligatorische Zahnspangen. Also daselse
Schlüsselwort kann nur gefolgt werden ,{
oderif
.else { if ... }
" schreiben .Wie bereits beantwortet, ist es nicht. Sie sind zwei Schlüsselwörter. Es ist der Beginn von zwei Aussagen, die aufeinander folgen. Um es etwas klarer zu machen, hier ist das BNF-Grammar, das sich mit
if
undelse
Anweisungen in C ++ - Sprache befasst.Beachten Sie, dass
statement
selbst enthaltenselection-statement
. Also, Kombinationen wie:sind gemäß C ++ Standard / Semantik möglich und gültig.
Hinweis: Die C ++ - Grammatik stammt von dieser Seite.
quelle
sonst und wenn sind zwei verschiedene C ++ - Schlüsselwörter . Auf eine if- Anweisung kann eine optionale else if ... else- Anweisung folgen . Eine if- Anweisung kann null oder mehr if 's haben und sie müssen vor dem else stehen .
Syntax und Beispiel finden Sie in diesem Tutorial zu if ... else-Anweisungen
quelle
Ich möchte nur all diesen Erklärungen meinen Standpunkt hinzufügen. Wenn Sie diese Schlüsselwörter separat verwenden können, müssen sie meines Erachtens ZWEI Schlüsselwörter sein. Vielleicht können Sie sich die C ++ - Grammatik über diesen Link im Stackoverflow ansehen: Gibt es eine Standard-C ++ - Grammatik?
Grüße
quelle
Auf eine if-Anweisung kann eine optionale else if ... else-Anweisung folgen, die sehr nützlich ist, um verschiedene Bedingungen mit einer einzelnen if ... else if-Anweisung zu testen.
Bei der Verwendung von if-, else if, else-Anweisungen sind nur wenige Punkte zu beachten.
schau mal wenn ... sonst Anweisung Tutorial .
quelle
else if
als wäre sie ein Schlüsselwort. Es macht also keinen Sinn, sie explizit zu definieren.