跳转到内容

title=C++ 编程:语言默认运算符

来自维基教科书,自由的教科书

运算符表

[编辑 | 编辑源代码]

同一组中的运算符具有相同的优先级,计算顺序由结合性决定(从左到右从右到左)。前面的组中的运算符具有比后面的组中的运算符更高的优先级。

注意
运算符的绑定实际上不能完全用“优先级”规则来描述,因此该表只是一个近似值。要正确理解这些规则,需要了解表达式的语法。

运算符 描述 示例用法 结合性
作用域解析运算符
:: 一元作用域解析运算符
用于全局变量
::NUM_ELEMENTS
:: 二元作用域解析运算符
用于类和命名空间成员
std::cout

函数调用、成员访问、后缀自增/自减运算符、RTTI 和 C++ 类型转换 从左到右
() 函数调用运算符 swap (x, y)
[] 数组索引运算符 arr [i]
. 成员访问运算符
用于类/联合类型的对象
或指向它的引用
obj.member
-> 成员访问运算符
用于指向类/联合类型的对象的指针
类型
ptr->member
++ -- 后缀自增/自减运算符 num++
typeid() 运行时类型识别运算符
用于对象或类型
typeid (std::cout)
typeid (std::iostream)
static_cast<>()
dynamic_cast<>()
const_cast<>()
reinterpret_cast<>()
C++ 风格的类型转换运算符
用于编译时类型转换
有关详细信息,请参见类型转换
static_cast<float> (i)
dynamic_cast<std::istream> (stream)
const_cast<char*> ("Hello, World!")
reinterpret_cast<const long*> ("C++")
类型() 函数式类型转换运算符
(static_cast 优先于
转换为基本类型)
float (i)
也用作构造函数调用
用于创建临时对象,尤其是在
类类型
std::string ("Hello, world!", 0, 5)

一元运算符 从右到左
!, not 逻辑非运算符 !eof_reached
~, compl 按位取反运算符 ~mask
+ - 一元加/减运算符 -num
++ -- 前缀自增/自减运算符 ++num
&, bitand 取地址运算符 &data
* 间接访问运算符 *ptr
new
new[]
new()
new()[]
new 运算符
用于单个对象或数组
new std::string (5, '*')
new int [100]
new (raw_mem) int
new (arg1, arg2) int [100]
delete
delete[]
delete 运算符
用于指向单个对象或数组的指针
delete ptr
delete[] arr
sizeof
sizeof()
sizeof 运算符
用于表达式或类型
sizeof 123
sizeof (int)
(类型) C 风格的类型转换运算符 (已弃用) (float)i

成员指针运算符 从右到左
.* 成员指针访问运算符
用于类/联合类型的对象
或指向它的引用
obj.*memptr
->* 成员指针访问运算符
用于指向类/联合类型的对象的指针
类型
ptr->*memptr

乘法运算符 从左到右
* / % 乘法、除法和
取模运算符
celsius_diff * 9 / 5

加法运算符 从左到右
+ - 加法和减法运算符 end - start + 1

按位移位运算符 从左到右
<<
>>
左移和右移运算符 bits << shift_len
bits >> shift_len

关系不等运算符 从左到右
< > <= >= 小于、大于、小于或
等于、大于或等于
i < num_elements

关系等式运算符 从左到右
== !=, not_eq 等于、不等于 choice != 'n'

按位与运算符 从左到右
&, bitand bits & clear_mask_complement

按位异或运算符 从左到右
^, xor bits ^ invert_mask

按位或运算符 从左到右
|, bitor bits | set_mask

逻辑与运算符 从左到右
&&, and arr != 0 && arr->len != 0

逻辑或运算符 从左到右
||, or arr == 0 || arr->len == 0

条件运算符 从右到左
?: size >= 0 ? size : 0

赋值运算符 从右到左
= 赋值运算符 i = 0
+= -= *= /= %=
&=, and_eq
|=, or_eq
^=, xor_eq<<= >>=
简写赋值运算符
(foo op= bar代表
foo = foo op bar)
num /= 10

异常
throw throw "Array index out of bounds"

逗号运算符 从左到右
, i = 0, j = i + 1, k = 0
华夏公益教科书