C Constant Expressions
Una expresión constante se evalúa en tiempo de compilación, no en tiempo de ejecución, y se puede usar en cualquier lugar en el que una constante se puede usar.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 coma flotante, constantes de enumeración, conversiones de tipo, expresiones de sizeof , y otras expresiones constantes.
Sintaxis
expresión constante:
condicionalcondicional:
lógico-O-expresióncondicionalde**:** de la expresiónde ¿?de la lógico-O-expresión
expresión:
asignación-expresiónasignación-expresiónde**,** de expresiones
asignación-expresión:
condicionalasignación-expresión del operador de asignación singular-expresión
operador de asignación: uno de
= *=/= %= += – = ^= DE &= OF <<= >>= |=
Los nonterminals para el declarador de struct, el enumerador, el declarador directo, el declarador de directo-resumen, y la instrucción denominada contienen la expresión constante no terminal.
Una expresión constante entera se debe utilizar 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 valor de una constante de mayúsculas/minúsculas .
Las expresiones constantes utilizadas en las directivas de preprocesador están sujetos a las restricciones adicionales.Por consiguiente, se conocen como “expresiones constantes restringidas.” Una expresión constante restringida no puede contener expresiones de sizeof , las constantes de enumeración, las conversiones de tipos a cualquier tipo, o constantes de flotante-tipo.Puede, sin embargo, para contener la expresión constante especial defined (identificador).