Je suis nouveau en C ++. Je vois souvent une déclaration conditionnelle comme ci-dessous:
if
statement_0;
else if
statement_1;
Question:
Syntaxiquement , dois-je traiter else if
comme un mot clé unique? Ou est-ce en fait une if
instruction imbriquée dans l'extérieur else
comme ci-dessous?
if
statement_0;
else
if
statement_1;
c++
syntax
language-lawyer
modeleur
la source
la source
else if
elseif
etELIF
. En fait seul (?) Le langage de programmation Algol68 permet un espace dans un identifiant; bien trop:PROC walk through tree ()
elseif
mot clé existe en VB et PHP.long double
vous devez écrire cela de cette façon.longdouble
est incorrect.Réponses:
Ils ne sont pas un mot-clé unique si nous allons à la section standard du projet de norme C ++ . Le tableau des
2.12
mots - clés4
répertorie les deuxif
etelse
séparément et il n'y a pas deelse if
mot-clé. Nous pouvons trouver une liste plus accessible de mots-clés C ++ en allant dans la section cppreferences sur les mots-clés .La grammaire de la section le
6.4
précise également:Le
if
inelse if
est une déclaration qui suit leelse
terme. La section dit également:et donne l'exemple suivant:
Alors, comment votre exemple légèrement étendu est-il analysé?
sera analysé comme ceci:
Remarque
Nous pouvons également déterminer qu'il
else if
ne peut pas s'agir d'un mot-clé en réalisant que les mots - clés sont des identifiants et nous pouvons voir dans la grammaire un identifiant dans ma réponse à Pouvez-vous commencer un nom de classe avec un chiffre numérique? que les espaces ne sont pas autorisés dans les identifiants et neelse if
peuvent donc pas être un seul mot-clé mais doivent être deux mots-clés séparés .la source
jeq
(if
|else if
),jne
(if
|else if
),jmp
(else
). Sur cette base, j'aurais dit que c'était un mot-clé unique ... probablement pas syntaxiquement mais en termes d'instructions.else if
, mais à la placeelsif
. Dans ces langues,else if
est vraiment un mot-clé. Cependant, les langages basés sur C ne le font généralement pas, comme l'indique cette réponse.else
déclaration finale . J'apprécierais cela aussi.Syntaxiquement, ce n'est pas un mot clé unique; les mots clés ne peuvent pas contenir d'espace blanc. Logiquement, lors de la rédaction des listes de
else if
, il est probablement mieux si vous le voyez comme un seul mot - clé, et d' écrire:Le compilateur voit littéralement cela comme:
mais les deux formes aboutissent à la même chose, et la première est beaucoup plus lisible.
la source
else
suivi d'uncompound-statement
. Après unelse
, il cherchestatement
(qui pourrait être commereturn;
ouf()
) ou uncompound-statement
...Non, ça ne l'est pas.
Ce sont deux mots-clés et, de plus, le second «si» est un sous-énoncé «à l'intérieur» de la portée déterminée par la première instruction «else».
la source
Vous pouvez voir la portée en utilisant des accolades:
Et normalement implémenté avec deux mots-clés distincts, l'un est si et l' autre est autre .
la source
if-statement
se termine par une optionelse-clause
. Unelse-clause
est soitelse code-block
ouelse if-statement
.code-block
comprend les accolades obligatoires. Leelse
mot - clé ne peut donc être suivi que de{
ouif
.else { if ... }
".Comme déjà répondu, ce n'est pas le cas. Ce sont deux mots clés. C'est le début de deux déclarations qui se succèdent. Pour essayer de le rendre un peu plus clair, voici le gramar BNF qui traite des instructions
if
etelse
en langage C ++.Notez que
statement
lui-même inclutselection-statement
. Donc, des combinaisons comme:sont possibles et valides selon la norme / la sémantique C ++.
Remarque: la grammaire C ++ est tirée de cette page.
la source
else et if sont deux mots-clés C ++ différents . Une instruction if peut être suivie d'une instruction else if ... else facultative . Une instruction if peut avoir zéro ou plus de if et ils doivent venir avant le else .
Vous pouvez trouver une syntaxe et un exemple dans ce didacticiel sur l'instruction if ... else
la source
Je voudrais juste ajouter mon point de vue à toutes ces explications. Selon moi, si vous pouvez utiliser ces mots-clés séparément, ils doivent être DEUX mots-clés. Peut-être que vous pouvez jeter un œil à la grammaire C ++, à partir de ce lien dans stackoverflow: Existe - t-il une grammaire C ++ standard?
Cordialement
la source
Une instruction if peut être suivie d'une instruction else if ... else facultative, ce qui est très utile pour tester diverses conditions en utilisant une instruction if ... else if unique.
Lors de l'utilisation des instructions if, else if, else, il y a peu de points à garder à l'esprit.
jetez un œil au didacticiel sur l'instruction if ... else .
la source
else if
comme s'il s'agissait d'un mot-clé, il n'y aurait donc aucun sens à le définir explicitement.