Je suis nouveau sur C++. Je vois souvent des instruction conditionnelle comme ci-dessous :
Question :
Syntaxiquement, je vais traiter comme un seul mot clé ? Ou est-ce réellement une imbriquée
énoncé dans l’outer `` comme ci-dessous ?
Je suis nouveau sur C++. Je vois souvent des instruction conditionnelle comme ci-dessous :
Question :
Syntaxiquement, je vais traiter comme un seul mot clé ? Ou est-ce réellement une imbriquée
énoncé dans l’outer `` comme ci-dessous ?
Ils ne sont pas un seul mot-clé si nous allons au projet de norme C++ section 2.12
mots-clés table, 4
listes deux if
et else
séparément et il n'y a pas d' else if
mot-clé. On peut trouver une liste accessible de C++ mots-clés en allant à cppreferences section sur les mots clés.
La grammaire dans la section 6.4
également est clair à ce sujet:
selection-statement:
if ( condition ) statement
if ( condition ) statement else statement
L' if
en else if
est une déclaration à la suite de la else
terme. L'article dit aussi:
[...]Le substatement dans une sélection-déclaration (chaque substatement, dans le autre forme de la si la déclaration) implicitement définit un bloc de portée (3.3). Si le substatement dans une sélection instruction est une instruction unique et pas un composé de déclaration, c'est comme si il a été réécrit pour être un composé déclaration contenant l'original substatement.
et donne l'exemple suivant:
if (x)
int i;
can be equivalently rewritten as
if (x) {
int i;
}
Alors, comment est votre légèrement exemple analysé?
if
statement_0;
else
if
statement_1;
else
if
statement_2 ;
seront analysés comme ceci:
if
{
statement_0;
}
else
{
if
{
statement_1;
}
else
{
if
{
statement_2 ;
}
}
}
Note
Nous pouvons aussi déterminer l' else if
ne peut pas être un mot-clé en se rendant compte que les mots clés sont des identifiants et nous pouvons voir à partir de la grammaire pour un identificateur dans ma réponse à Pouvez-vous commencer un nom de classe avec un chiffre? que les espaces ne sont pas autorisés dans les identificateurs et donc, par conséquent, else if
ne peut pas être un seul mot-clé , mais doivent être deux mots-clés.
D’un point de vue syntaxique, il n’est pas un seul mot clé ; Mots-clés ne peut pas contenir d’espace blanc. Logiquement, quelle écriture listes de `` , c’est probablement mieux si vous considèrent comme un seul mot clé et d’écrire :
Le compilateur a littéralement voit cela comme :
mais les deux formes sortent à la même chose, et le premier est beaucoup plus lisible.
Comme déjà répondu, il n'est pas. Ils sont deux mots-clés. Le début de deux états l'un à la suite de chaque un d'autres. Pour essayer de le rendre un peu plus clair, voici la BNF grammar rencontrent qui traitent if
et else
des énoncés en langage C++.
statement:
labeled-statement
attribute-specifier-seqopt expression-statement
attribute-specifier-seqopt compound-statement
attribute-specifier-seqopt selection-statement
attribute-specifier-seqopt iteration-statement
attribute-specifier-seqopt jump-statement
declaration-statement
attribute-specifier-seqopt try-block
selection-statement:
if ( condition ) statement
if ( condition ) statement else statement
Notez que statement
se comprennent selection-statement
. Ainsi, des combinaisons telles que:
if (cond1)
stat
else if(cond2)
stat
else
stat
sont possible et valide selon la norme C++/sémantique.
Remarque: C++ grammaire prendre à partir de cette page.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.