表达式
表达式是由运算符及其操作数组成的序列,用于指定计算。
表达式求值可能产生结果(例如,求值 2 + 2 产生结果 4),可能产生副作用(例如,求值 printf("%d", 4) 将字符 '4' 发送到标准输出流),并且可能指定对象或函数。
目录 |
[编辑] 通用
[编辑] 运算符
常用运算符 | ||||||
---|---|---|---|---|---|---|
赋值 | 递增 递减 |
算术 | 逻辑 | 比较 | 成员 访问 |
其他 |
a = b |
++a |
+a |
!a |
a == b |
a[b] |
a(...) |
[编辑] 转换
[编辑] 其他
- 常量表达式可以在编译时求值,并用于编译时上下文(非 VLA(自 C99 起)数组大小、静态初始化器等)
|
(since C11) |
|
(since C99) |
[编辑] 主表达式
任何运算符的操作数可以是其他表达式,也可以是主表达式(例如,在 1 + 2 * 3 中,运算符 + 的操作数是子表达式 2 * 3 和主表达式 1)。
主表达式是以下任何一种
3) 泛型选择
|
(since C11) |
括号中的任何表达式也被归类为主表达式:这保证了括号的优先级高于任何运算符。
[编辑] 常量和字面量
某些类型的常量值可以使用称为字面量(对于左值表达式)和常量(对于非左值表达式)的专用表达式嵌入到 C 程序的源代码中
- 整型常量是整数类型的十进制、八进制或十六进制数字。
- 字符常量是 int 类型的单个字符,适合转换为字符类型,或 char8_t,(自 C23 起) char16_t、char32_t 或(自 C11 起) wchar_t 类型的单个字符
- 浮点常量是 float、double 或 long double 类型的值
|
(since C23) |
- 字符串字面量是 char[]、char8_t[](自 C23 起)、char16_t[]、char32_t[]、(自 C11 起) 或 wchar_t[] 类型的字符序列,表示以空字符结尾的字符串
|
(since C99) |
[编辑] 未求值的表达式
sizeof 运算符的操作数是未求值的表达式(除非它们是 VLA)(自 C99 起)。因此,size_t n = sizeof(printf("%d", 4)); 不会执行控制台输出。
|
(since C11) |
[编辑] 参考文献
- C23 标准 (ISO/IEC 9899:2024)
- 6.5 表达式 (p: 待定)
- 6.6 常量表达式 (p: 待定)
- C17 标准 (ISO/IEC 9899:2018)
- 6.5 表达式 (p: 55-75)
- 6.6 常量表达式 (p: 76-77)
- C11 标准 (ISO/IEC 9899:2011)
- 6.5 表达式 (p: 76-105)
- 6.6 常量表达式 (p: 106-107)
- C99 标准 (ISO/IEC 9899:1999)
- 6.5 表达式 (p: 67-94)
- 6.6 常量表达式 (p: 95-96)
- C89/C90 标准 (ISO/IEC 9899:1990)
- 3.3 表达式
- 3.4 常量表达式
[编辑] 参见
C++ 文档 关于 表达式
|