Soy nuevo en C ++. A menudo veo una declaración condicional como la siguiente:
if
statement_0;
else if
statement_1;
Pregunta:
Sintácticamente , ¿debo tratar else if
como una sola palabra clave? ¿O es en realidad una if
declaración anidada dentro del exterior else
como se muestra a continuación?
if
statement_0;
else
if
statement_1;
c++
syntax
language-lawyer
modelador
fuente
fuente
else if
elseif
yELIF
. De hecho, sólo (?) El lenguaje de programación Algol68 permite un espacio en un identificador; agradable también:PROC walk through tree ()
elseif
palabra clave existe en VB y PHP.long double
tienes que escribir eso de esa manera.longdouble
Es incorrecto.Respuestas:
No son una sola palabra clave si vamos al borrador de la sección estándar de C ++. La tabla de
2.12
palabras clave4
enumera ambosif
y porelse
separado y no hay unaelse if
palabra clave. Podemos encontrar una lista más accesible de palabras clave de C ++ yendo a la sección de referencias sobre palabras clave .La gramática en la sección
6.4
también deja esto en claro:El
if
enelse if
un comunicado tras elelse
término. La sección también dice:y proporciona el siguiente ejemplo:
Entonces, ¿cómo se analiza su ejemplo ligeramente extendido?
se analizará así:
Nota
También podemos determinar que
else if
no puede ser una palabra clave al darnos cuenta de que las palabras clave son identificadores y podemos ver en la gramática de un identificador en mi respuesta a ¿Puede comenzar un nombre de clase con un dígito numérico? que los espacios no están permitidos en los identificadores y, por lo tantoelse if
, no pueden ser una sola palabra clave sino dos palabras clave separadas .fuente
jeq
(if
|else if
),jne
(if
|else if
),jmp
(else
). Basado en eso, habría dicho que era una sola palabra clave ... probablemente no sintácticamente, pero sí en cuanto a instrucciones.else if
, pero en su lugarelsif
. En esos idiomas,else if
es realmente una palabra clave. Sin embargo, los lenguajes basados en C generalmente no lo hacen, como dice esta respuesta.else
declaración final . Yo también agradecería esto.Sintácticamente, no es una sola palabra clave; las palabras clave no pueden contener espacios en blanco. Lógicamente, al escribir listas de
else if
, probablemente sea mejor si lo ve como una sola palabra clave y escribe:El compilador literalmente ve esto como:
pero ambas formas resultan iguales y la primera es mucho más legible.
fuente
else
seguido de uncompound-statement
. Después de unaelse
, se busquestatement
(que podría ser comoreturn;
of()
) o unacompound-statement
...No, no es.
Son dos palabras clave y, además, el segundo "si" es una subenunciación "dentro" del alcance determinado por la primera declaración "más".
fuente
Puede ver el alcance usando llaves:
Y normalmente se implementa con dos palabras clave distintas, una es si y otra es otra .
fuente
if-statement
termina con un opcionalelse-clause
. Anelse-clause
es unaelse code-block
o la otraelse if-statement
.code-block
incluye tirantes obligatorios. Por tanto, laelse
palabra clave solo puede ir seguida de{
oif
.else { if ... }
".Como ya se respondió, no lo es. Son dos palabras clave. Es el comienzo de dos declaraciones una tras otra. Para intentar hacerlo un poco más claro, aquí está la gramática de BNF que trata sobre
if
yelse
declaraciones en lenguaje C ++.Tenga en cuenta que
statement
sí incluyeselection-statement
. Entonces, combinaciones como:son posibles y válidos de acuerdo con el estándar / semántica de C ++.
Nota: la gramática de C ++ se toma de esta página.
fuente
else y if son dos palabras clave de C ++ diferentes . Una instrucción if puede ir seguida de una instrucción else if ... else opcional . Una instrucción if puede tener cero o más si y deben ir antes que el else .
Puede encontrar la sintaxis y el ejemplo en este tutorial de instrucciones if ... else
fuente
Solo me gustaría agregar mi punto de vista a todas estas explicaciones. Como yo lo veo, si puede usar estas palabras clave por separado, deben ser DOS palabras clave. Tal vez pueda echar un vistazo a la gramática de C ++, desde este enlace en stackoverflow: ¿Existe una gramática estándar de C ++?
Saludos
fuente
Una instrucción if puede ir seguida de una instrucción else if ... else opcional, que es muy útil para probar varias condiciones utilizando una instrucción if ... else if.
Al usar declaraciones if, else if, else, hay algunos puntos a tener en cuenta.
eche un vistazo al tutorial de declaración if ... else .
fuente
else if
como si fuera una palabra clave, por lo que no tendría sentido definirlo explícitamente.