几种表达式被称为常量表达式。
预处理器常量表达式
#if 或 #elif 后面的表达式必须扩展为。
除赋值,增量,减量,函数调用或逗号之外的其他操作符,其参数是预处理常量表达式
整数常量
字符常量
特殊的预处理器操作员 defined
当在#if表达式中计算字符常量时,可以在源字符集,执行字符集或其他一些实现定义的字符集中解释字符常量。
Integer arithmetic in #if-expressions is performed using the semantics of intmax_t for signed types and uintmax_t for unsigned types.(since C99)
整数常量表达式
一个整型常量表达式是表达式。
除赋值,递增,递减,函数调用或逗号以外的其他操作符,除了转换操作符只能将算术类型转换为整数类型
整数常量
枚举常量
字符常量
浮点型常量,但前提是它们立即用作转换为整数类型的操作数
操作数不是VLA的操作符的大小(自C99起)
_Alignof operators(since C11)
_Alignof operators
(since C11)
整数常量表达式在编译时进行评估。以下上下文需要称为整型常量表达式的表达式':
位字段的大小。
枚举常量的值
caseswitch语句的标签
非VLA(自C99以来)阵列的大小
整数指针隐式转换。
The index in an array designator