Expressions
表达式是由 运算符 及其 操作数 组成的序列,用于指定计算过程。
表达式求值可能产生结果(例如,对 2 + 2 的求值会生成结果 4 ),可能产生副作用(例如,对 printf ( "%d" , 4 ) 的求值会将字符 '4' 发送到标准输出流),并且可以指代对象或函数。
目录 |
概述
运算符
| 常用运算符 | ||||||
|---|---|---|---|---|---|---|
| 赋值 |
自增
自减 |
算术 | 逻辑 | 比较 |
成员
访问 |
其他 |
|
a
=
b
|
++
a
|
+
a
|
!
a
|
a
==
b
|
a
[
b
]
|
a
(
...
)
|
- operator precedence 定义了运算符与其参数绑定的顺序
- alternative representations 是某些运算符的替代拼写形式
类型转换
其他
- 常量表达式 可在编译时求值并用于编译期上下文( 非可变长度数组 (C99起) 的数组大小、静态初始化器等)
|
(C11 起) |
|
(C99 起) |
主表达式
任何运算符的操作数可以是其他表达式,也可以是 主表达式 (例如在 1 + 2 * 3 中,operator+ 的操作数是子表达式 2 * 3 和主表达式 1 )。
基本表达式可以是以下任意一种:
|
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 运算符 的操作数是不被求值的表达式 (除非它们是可变长度数组) (C99起) 。因此, size_t n = sizeof ( printf ( "%d" , 4 ) ) ; 不会执行控制台输出。
|
|
(C11起) |
参考文献
- C23 标准 (ISO/IEC 9899:2024):
-
- 6.5 表达式 (p: TBD)
-
- 6.6 常量表达式 (p: TBD)
- C17 标准 (ISO/IEC 9899:2018):
-
- 6.5 表达式 (页码: 55-75)
-
- 6.6 常量表达式 (页码: 76-77)
- C11标准(ISO/IEC 9899:2011):
-
- 6.5 表达式(页码:76-105)
-
- 6.6 常量表达式(页码:106-107)
- C99标准(ISO/IEC 9899:1999):
-
- 6.5 表达式(页码:67-94)
-
- 6.6 常量表达式(页码:95-96)
- C89/C90 标准 (ISO/IEC 9899:1990):
-
- 3.3 表达式
-
- 3.4 常量表达式
参见
|
C++ 文档
关于
表达式
|