表达式
来自 cppreference.com
表达式是运算符及其操作数的序列,用于指定计算。
表达式求值可能会产生结果(例如,2+2的求值结果为4),可能会产生副作用(例如,printf("%d",4)会将字符'4'发送到标准输出流),并且可能指定对象或函数。
内容 |
[编辑] 通用
[编辑] 运算符
常用运算符 | ||||||
---|---|---|---|---|---|---|
赋值 | 自增 自减 |
算术 | 逻辑 | 比较 | 成员 访问 |
其他 |
a = b |
++a |
+a |
!a |
a == b |
a[b] |
a(...) |
[编辑] 转换
[编辑] 其他
- 常量表达式 可以在编译时求值,并在编译时上下文(非 VLA (自 C99 起)数组大小、静态初始化程序等)中使用
|
(自 C11 起) |
|
(自 C99 起) |
[编辑] 基本表达式
任何运算符的操作数可以是其他表达式,也可以是基本表达式(例如,在1+2*3中,运算符 + 的操作数是子表达式2*3 和基本表达式1)。
基本表达式可以是以下任何一种
1) 常量和字面量(例如 2 或 "Hello, world")
3) 通用选择
|
(自 C11 起) |
任何括号内的表达式也归类为基本表达式:这保证括号比任何运算符的优先级更高。
[编辑] 常量和字面量
可以使用称为字面量(用于左值表达式)和常量(用于非左值表达式)的专用表达式,在 C 程序的源代码中嵌入某些类型的常数值
- 整数常量 是十进制、八进制或十六进制的整数类型数字。
- 字符常量 是单个字符,类型为int,适合转换为字符类型,或者类型为char8_t,(自 C23 起) char16_t, char32_t, 或 (自 C11 起)wchar_t
- 浮点常量 是类型为float、double 或 long double 的值
|
(自 C23 起) |
- 字符串字面量 是类型为char[], char8_t[](自 C23 起), char16_t[], char32_t[],(自 C11 起) 或 wchar_t[] 的字符序列,表示以空字符结尾的字符串
|
(自 C99 起) |
[编辑] 未求值表达式
sizeof
运算符 的操作数是不求值的表达式(除非它们是 VLA)(自 C99 起)。因此,size_t n = sizeof(printf("%d", 4)); 不会执行控制台输出。
|
(自 C11 起) |
[编辑] 参考文献
- 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++ 文档 用于 表达式
|