Постоянные выражения в C
Константное выражение вычисляется во время компиляции, а не во время выполнения, чем можно пользоваться всегда, когда возможно использование константы. При вычислении константного выражения должна получаться константа со значением в диапазоне представимых значений для этого типа. Операнды константного выражения могут быть целыми константами, символьными константами, константами с плавающей запятой, константами перечисления, приведениями типов, выражениями sizeof
и другими константными выражениями.
Синтаксис
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
: один из
=
*=
/=
%=
+=
-=
<<=
>>=
&=
^=
|=
Нетерминальные выражения для оператора объявления структуры, перечислителя, прямого оператора объявления, прямого абстрактного оператора объявления и оператора с меткой содержат нетерминальное выражение constant-expression
.
Для определения размера члена битового поля структуры, значения константы перечисления, размера массива или значения константы case
нужно использовать целочисленное константное выражение.
На константные выражения, используемые в директивах препроцессора, накладываются некоторые ограничения. Они называются ограниченными константными выражениями. Ограниченное константное выражение не может содержать выражения sizeof
, константы перечисления, приведения типов к любому типу или константы с плавающей запятой. Но оно может содержать специальное константное выражение defined (
identifier )
.