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
表达式、枚举常量、到任何类型的类型强制转换或浮点类型常量。 但它可包含特殊常量表达式 identifier defined (
)
。