Wyrażenia stałe języka C
Wyrażenie stałe jest obliczane w czasie kompilacji, a nie w czasie wykonywania i może być używane w dowolnym miejscu, w których można użyć stałej. Wyrażenie stałe musi zostać obliczone na stałą, która znajduje się w zakresie wartości możliwych do reprezentowania dla tego typu. Operandy wyrażenia stałego mogą być stałymi liczbami całkowitymi, stałymi znakami, stałymi zmiennoprzecinkowami, stałymi wyliczeniami, rzutami typów, sizeof
wyrażeniami i innymi wyrażeniami stałymi.
Składnia
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 i instrukcja oznaczona etykietą zawierają constant-expression
nonterminal.
Wyrażenie stałe całkowitej musi służyć do określania rozmiaru elementu członkowskiego pola bitowego struktury, wartości stałej wyliczenia, rozmiaru tablicy lub wartości stałej case
.
Wyrażenia stałe używane w dyrektywach preprocesora podlegają kilku ograniczeniom. Są one nazywane wyrażeniami stałych z ograniczeniami . Wyrażenie stałe z ograniczeniami nie może zawierać sizeof
wyrażeń, stałych wyliczenia, rzutowania typów do dowolnego typu lub zmiennych stałych typu. Może jednak zawierać specjalny identyfikator )
wyrażenia defined (
stałej .