Expressions constantes C
Une expression constante est évaluée au moment de la compilation, et non au moment de l’exécution, et elle peut être utilisée partout où une constante peut être utilisée. L'expression constante doit être évaluée en une constante qui est comprise dans la plage des valeurs représentables pour ce type. Les opérandes d'une expression constante peuvent être des constantes entières, des constantes caractère, des constantes à virgule flottante, des constantes d'énumération, des casts de type, des expressions sizeof
et d'autres expressions constantes.
Syntaxe
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
: l'un des éléments suivants :
=
*=
/=
%=
+=
-=
<<=
>>=
&=
^=
|=
Les éléments non terminaux pour les déclarateurs de struct, l’énumérateur, le déclarateur direct, le déclarateur direct-abstract et l’instruction étiquetée contiennent l’élément non terminal constant-expression
.
Une expression constante intégrale doit être utilisée pour spécifier la taille d’un membre champ de bits d’une structure, la valeur d’une constante d’énumération, la taille d’un tableau ou la valeur d’une constante case
.
Les expressions constantes utilisées dans les directives de préprocesseur sont soumises à plusieurs restrictions. Elles sont appelées expressions constantes restreintes. Une expression constante restreinte ne peut pas contenir d’expression sizeof
, de constantes d’énumération, de casts de type en tout type, ni de constantes de type flottant. Elle peut toutefois contenir l’expression constante spéciale defined (
identifier )
.