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

См. также

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