Константные выражения 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 (.

См. также

Операнды и выражения