Výrazy konstant v jazyce C
Konstantní výraz se vyhodnocuje v době kompilace, ne v době běhu a dá se použít na libovolném místě, kde lze konstantu použít. Konstantní výraz se musí vyhodnotit na konstantu, která je v rozsahu reprezentovatelných hodnot pro daný typ. Operandy konstantního výrazu mohou být celočíselné konstanty, znakové konstanty, konstanty s plovoucí desetinou čárkou, výčtové konstanty, přetypování typů, sizeof
výrazy a další konstantní výrazy.
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
: jeden z
=
*=
/=
%=
+=
-=
<<=
>>=
&=
^=
|=
Nonterminals for struct deklarator, enumerator, direct deklarator, direct-abstract deklarator, and labeled statement contain the constant-expression
nonterminal.
Celočíselný konstantní výraz se musí použít k určení velikosti člena bitového pole struktury, hodnoty konstanty výčtu, velikosti pole nebo hodnoty konstanty case
.
Konstantní výrazy používané ve direktivách preprocesoru podléhají několika omezením. Označují se jako výrazy s omezenými konstantami. Omezený konstantní výraz nemůže obsahovat sizeof
výrazy, výčtové konstanty, přetypování typu na jakýkoli typ nebo konstanty s plovoucí desetinou čárkou. Může však obsahovat speciální identifikátor konstantního výrazu defined (
)
.