C++ 语言中的运算符与表达式

表达式和语句

表达式由操作数和运算符构成,操作数本身也可以是一个表达式。

表达式后加分号就构成了语句。

C++ 中的运算符优先级

  • 运算符优先级决定了运算符用于值的顺序。
  • C++ 运算符共分为 18 个组别。组别越小优先级越高。
  • 如果两个运算符被用于同一个操作数,则首先应用优先级高的运算符。
  • 如果两个运算符的优先级相同,则 C++ 使用结合性规则来决定哪个运算符先结合。
  • 同一组运算符的优先级和结合性相同。
  • 从左到右的结合性比表示首先应用最左边的运算符,而从右到左的结合性表示首先应用最右边的运算符。
  • 计算时,()的优先级最高,算术>关系>逻辑>条件>赋值>逗号(并非绝对)。
  • 单目运算符>双目运算符>三目运算符(并非绝对)。
  • 不清楚具体的优先级和结合性的话,可以加()。
运算符 结合性 含义
优先级第一组
::   作用域解析运算符
优先级第二组
(表达式)   分组
() L-R 函数调用
()   值构造,即 type(expr)
[]   数组下标
->   间接成员运算符
.   直接成员运算符
const_cast   专用的类型转换
dynamic_cast   专用的类型转换
reinterpret_cast   专用的类型转换
static_cast   专用的类型转换
typeid   类型标识
++  

加 1 运算符,后缀

--   减 1 运算符,后缀
优先级第三组(全是一元运算符)
R-L 逻辑非
~   位非
+  

一元加号,正号

-   一元减号,负号
++   加 1 运算符,前缀
--   减 1 运算符,前缀
&   地址
*   解除引用(间接值)
()   类型转换,即 (type)expr
sizeof   长度,以字节为单位
new   动态分配内存
new []   动态分配数组
delete   动态释放内存
delete  

动态释放数组

优先级第四组
.* L-R 成员解除引用
->*   间接成员解除引用
优先级第五组(全是二元运算符)
* L-R
/  
%   模(余数)
优先级第六组(全是二元运算符)
+ L-R
-  
优先级第七组
<< L-R 左移
>>   右移
优先级第八组
< L-R 小于
<=   小于或等于
>=   大于或等于
>   大于
优先级第九组
== L-R 等于
!=   不等于
优先级第十组(一元运算符)
& L-R 按位 AND
优先级第十一组
^ L-R 按位 XOF(异或)
优先级第十二组
| L-R 按位 OR
优先级第十三组
&& L-R 逻辑 AND
优先级第十四组
|| L-R 逻辑 OR
优先级第十五组
?: R-L 条件
优先级第十六组
= R-L 简单赋值
*=   乘并赋值
/=   除并赋值
%=   求模并赋值
+=   加并赋值
-=   减并赋值
&=   按位 AND 并赋值
^=   按位 XOR 并赋值
|=   按位 OR 并赋值
<<=   左移并赋值
>>=  

右移并赋值

优先级第十七组
throw L-R 引发异常
优先级第十八组
, L-R 将两个表达式合并为一个
发布了77 篇原创文章 · 获赞 5 · 访问量 4891

猜你喜欢

转载自blog.csdn.net/SAKURASANN/article/details/104419328