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 (标识符)

另请参阅

作数和表达式