Expresiones constantes de C
Una expresión constante se evalúa en tiempo de compilación, en lugar de en tiempo de ejecución, y se puede usar en cualquier lugar en el que se pueda usar una constante. La expresión constante se debe evaluar como una constante que se encuentre en el intervalo de valores representables para ese tipo. Los operandos de una expresión constante pueden ser constantes enteras, constantes de caracteres, constantes de punto flotante, constantes de enumeración, conversiones de tipo, expresiones sizeof
y otras expresiones constantes.
Sintaxis
constant-expression
:
conditional-expression
conditional-expression
:
logical-OR-expression
logical-OR-expression
?
expression
:
conditional-expression
expression
:
assignment-expression
expression
,
assignment-expression
assignment-expression
:
conditional-expression
unary-expression
assignment-operator
assignment-expression
assignment-operator
: uno de
=
*=
/=
%=
+=
-=
<<=
>>=
&=
^=
|=
Los elementos no terminales para declarador de struct, enumerador, declarador directo, declarador directo-abstracto e instrucción etiquetada contienen el elemento no terminal constant-expression
.
Se debe usar una expresión constante entera para especificar el tamaño de un miembro de campo de bits de una estructura, el valor de una constante de enumeración, el tamaño de una matriz o el valor de una constante case
.
Las expresiones constantes usadas en las directivas de preprocesador están sujetas a varias restricciones. Se conocen como expresiones constantes restringidas. Una expresión constante restringida no puede contener expresiones sizeof
, constantes de enumeración, conversiones de tipos a cualquier tipo ni constantes de tipo flotante. Puede, en cambio, contener la expresión constante especial defined (
identifier )
.