C++ 语言包括所有 C 运算符并添加多个新的运算符。 运算符指定对一个或多个操作数执行的计算。
优先级和结合性
运算符优先级指定了包含多个运算符的表达式中的运算顺序。 运算符关联性指定了在包含多个具有相同优先级的运算符的表达式中,操作数是与其左侧还是右侧的操作数组合。
替代拼写
C++ 为某些运算符指定了替代拼写。 在 C 中,替代拼写在 <iso646.h> 标头中作为宏提供。 在 C++ 中,这些替代项是关键字,<iso646.h> 或 C++ 等效的 <ciso646> 已弃用。 在 Microsoft C++ 中,需要 /permissive- 或 /Za 编译器选项才能启用替代拼写。
C++ 运算符的优先级和关联性表
下表显示 C++ 运算符的优先级和关联性(从最高优先级到最低优先级)。 优先级别编号相同的运算符具有等同的优先级别,除非由括号显式施加另一种关系。
运算符说明 | 运算符 | 替代项 |
---|---|---|
第 1 组优先级,无关联性 | ||
范围解析 | :: | |
第 2 组优先级,从左到右关联 | ||
成员选择(对象或指针) | . 或 -> | |
数组下标 | [] | |
函数调用 | () | |
后缀递增 | ++ | |
后缀递减 | -- | |
类型名称 | typeid | |
常量类型转换 | const_cast | |
动态类型转换 | dynamic_cast | |
重新解释的类型转换 | reinterpret_cast | |
静态类型转换 | static_cast | |
第 3 组优先级,从右到左关联 | ||
对象或类型的大小 | sizeof | |
前缀递增 | ++ | |
前缀递减 | -- | |
二进制反码 | ~ | compl |
逻辑“非” | ! | not |
一元求反 | - | |
一元加 | + | |
Address-of | & | |
间接寻址 | * | |
创建对象 | new | |
销毁对象 | delete | |
强制转换 | () | |
第 4 组优先级,从左到右关联 | ||
指向成员的指针(对象或指针) | .* 或 ->* | |
第 5 组优先级,从左到右关联 | ||
乘法 | * | |
除法 | / | |
取模 | % | |
第 6 组优先级,从左到右关联 | ||
加法 | + | |
减法 | - | |
第 7 组优先级,从左到右关联 | ||
左移 | << | |
右移 | >> | |
第 8 组优先级,从左到右关联 | ||
小于 | < | |
大于 | > | |
小于或等于 | <= | |
大于或等于 | >= | |
第 9 组优先级,从左到右关联 | ||
等式 | == | |
不相等 | != | not_eq |
第 10 组优先级,从左到右关联 | ||
按位“与” | & | bitand |
第 11 组优先级,从左到右关联 | ||
按位“异或” | ^ | xor |
第 12 组优先级,从左到右关联 | ||
按位“与或” | | | bitor |
第 13 组优先级,从左到右关联 | ||
逻辑与 | && | and |
第 14 组优先级,从左到右关联 | ||
逻辑或 | || | or |
第 15 组优先级,从右到左关联 | ||
条件 | ? : | |
转让 | = | |
乘法赋值 | *= | |
除法赋值 | /= | |
取模赋值 | %= | |
加法赋值 | += | |
减法赋值 | -= | |
左移赋值 | <<= | |
右移赋值 | >>= | |
按位“与”赋值 | &= | and_eq |
按位“与或”赋值 | |= | or_eq |
按位“异或”赋值 | ^= | xor_eq |
引发表达式 | throw | |
第 16 组优先级,从左到右关联 | ||
Comma | , |
一、算术运算符
运算符 | 描述 |
---|---|
+ | 把两个操作数相加 |
- | 从第一个操作数中减去第二个操作数 |
* | 把两个操作数相乘 |
/ | 分子除以分母 |
% | 取模运算符,整除后的余数 |
++ | 自增运算符,整数值增加 1 |
– | 自减运算符,整数值减少 1 |
通过下面的例子可以让我们更好的理解C++中的运算符的意义与使用方法。
输出:
a + b 的值是 99
a - b 的值是 33
a * b 的值是 2178
a / b 的值是 2
a % b 的值是 0
注意:需要知道a++和++a的区别(a–一样)
a++ :a先进行赋值,然后再进行++运算。
++a :a首先进行++运算,然后赋值给a。
下面的代码可以更好的展示他们两个的关系:
输出:
1
2
二、关系运算符
运算符 | 描述 |
---|---|
== | 检查两个操作数的值是否相等,如果相等则条件为真。 |
!= | 检查两个操作数的值是否相等,如果不相等则条件为真。 |
> | 检查左操作数的值是否大于右操作数的值,如果是则条件为真。 |
< | 检查左操作数的值是否小于右操作数的值,如果是则条件为真。 |
<= | 检查左操作数的值是否大于或等于右操作数的值,如果是则条件为真。 |
>= | 检查左操作数的值是否小于或等于右操作数的值,如果是则条件为真。 |
输出:
a 不等于 b
a 不小于 b
a大于 b
下面的代码可以让我们更好的理解逻辑运算符:
输出:
6666
77-----77
8888
三、逻辑运算符
运算符 | 描述 |
---|---|
&& | 称为逻辑与运算符。如果两个操作数都 true,则条件为 true。 |
丨丨 | 称为逻辑或运算符。如果两个操作数中有任意一个 true,则条件为 true。 |
! | 称为逻辑非运算符。用来逆转操作数的逻辑状态,如果条件为 true 则逻辑非运算符将使其为 false。 |
四、位运算符
p | q | p&q | p丨q | p^q |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 0 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
- &:表示位与操作
- 丨:表示位或操作
- ^ :表示异或操作
五、赋值运算符
运算符 | 描述 |
---|---|
= | 简单的赋值运算符,把右边操作数的值赋给左边操作数 |
+= | 加且赋值运算符,把右边操作数加上左边操作数的结果赋值给左边操作数 |
-= | 减且赋值运算符,把左边操作数减去右边操作数的结果赋值给左边操作数 |
*= | 乘且赋值运算符,把右边操作数乘以左边操作数的结果赋值给左边操作数 |
/= | 除且赋值运算符,把左边操作数除以右边操作数的结果赋值给左边操作数 |
%= | 求模且赋值运算符,求两个操作数的模赋值给左边操作数 |
<<= | 左移且赋值运算符 |
>>= | 右移且赋值运算符 |
&= | 按位与且赋值运算符 |
^= | 按位异或且赋值运算符 |
丨= | 按位或且赋值运算符 |
六、杂项运算符
sizeof-----sizeof 运算符返回变量的大小。例如,sizeof(a) 将返回 4,其中 a 是整数。
Condition ? X : Y-----如果 Condition 为真 ? 则值为 X : 否则值为 Y。
.(点)和 ->(箭头)-----成员运算符用于引用类、结构和共用体的成员。
Cast-----强制转换运算符把一种数据类型转换为另一种数据类型。例如,int(2.2000) 将返回 2。
&------指针运算符 & 返回变量的地址。例如 &a; 将给出变量的实际地址。
*------指针运算符 * 指向一个变量。例如,*var; 将指向变量 var。
到此这篇关于一文详解C++中运算符的使用的文章就介绍到这了,更多相关C++运算符内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!