长生栈 长生栈
首页
  • 编程语言

    • C语言
    • C++
    • Java
    • Python
  • 数据结构和算法

    • 全排列算法实现
    • 动态规划算法
  • CMake
  • gitlab 安装和配置
  • docker快速搭建wordpress
  • electron+react开发和部署
  • Electron-创建你的应用程序
  • ImgUI编译环境
  • 搭建图集网站
  • 使用PlantUml画时序图
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Living Team

编程技术分享
首页
  • 编程语言

    • C语言
    • C++
    • Java
    • Python
  • 数据结构和算法

    • 全排列算法实现
    • 动态规划算法
  • CMake
  • gitlab 安装和配置
  • docker快速搭建wordpress
  • electron+react开发和部署
  • Electron-创建你的应用程序
  • ImgUI编译环境
  • 搭建图集网站
  • 使用PlantUml画时序图
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Hello world
  • C++ 数据类型
  • 运算符优先级
  • 命名空间
  • 多线程的基本用法(C++11)
  • C++类对象的成员内存占用
  • C++
DC Wang
2022-05-04

运算符优先级

# 运算符优先级

运算符 描述 例子 可重载性
第一级别
:: 作用域解析符 Class::age = 2; 不可重载
第二级别
() 函数调用 isdigit('1') 可重载
() 成员初始化 c_tor(int x, int y) : _x(x), _y(y*10){}; 可重载
[] 数组数据获取 array[4] = 2; 可重载
-> 指针型成员调用 ptr->age = 34; 可重载
. 对象型成员调用 obj.age = 34; 不可重载
++ 后自增运算符 for( int i = 0; i < 10; i++ ) cout 可重载
-- 后自减运算符 for( int i = 10; i > 0; i-- ) cout 可重载
const_cast 特殊属性转换 const_cast(type_from); 不可重载
dynamic_cast 特殊属性转换 dynamic_cast(type_from); 不可重载
static_cast 特殊属性转换 static_cast(type_from); 不可重载
reinterpret_cast 特殊属性转换 reinterpret_cast(type_from); 不可重载
typeid 对象类型符 cout « typeid(var).name();cout « typeid(type).name(); 不可重载
第三级别(具有右结合性)
! 逻辑取反 if( !done ) … 可重载
not ! 的另一种表达
~ 按位取反 flags = ~flags; 可重载
compl ~的另一种表达
++ 预自增运算符 for( i = 0; i < 10; ++i ) cout 可重载
-- 预自减运算符 for( i = 10; i > 0; --i ) cout 可重载
- 负号 int i = -1; 可重载
+ 正号 int i = +1; 可重载
* 指针取值 int data = *intPtr; 可重载
& 值取指针 int *intPtr = &data; 可重载
new 动态元素内存分配 long *pVar = new long;MyClass *ptr = new MyClass(args); 可重载
new [] 动态数组内存分配 long *array = new long[n]; 可重载
delete 动态析构元素内存 delete pVar; 可重载
delete [] 动态析构数组内存 delete [] array; 可重载
(type) 强制类型转换 int i = (int) floatNum; 可重载
sizeof 返回类型内存 int size = sizeof floatNum;int size = sizeof(float); 不可重载
第四级别
->* 类指针成员引用 ptr->*var = 24; 可重载
.* 类对象成员引用 obj.*var = 24; 不可重载
第五级别
* 乘法 int i = 2 * 4; 可重载
/ 除法 float f = 10.0 / 3.0; 可重载
% 取余数(模运算) int rem = 4 % 3; 可重载
第六级别
+ 加法 int i = 2 + 3; 可重载
- 减法 int i = 5 - 1; 可重载
第七级别
<< 位左移 int flags = 33 可重载
>> 位右移 int flags = 33 >> 1; 可重载
第八级别
< 小于 if( i < 42 ) … 可重载
<= 小于等于 if( i 可重载
> 大于 if( i > 42 ) … 可重载
>= 大于等于 if( i >= 42 ) ... 可重载
第九级别
== 恒等于 if( i == 42 ) ... 可重载
eq == 的另一种表达
!= 不等于 if( i != 42 ) … 可重载
not_eq !=的另一种表达
第十级别
& 位且运算 flags = flags & 42; 可重载
bitand &的另一种表达
第十一级别
^ 位异或运算 flags = flags ^ 42; 可重载
xor ^的另一种表达
第十二级别
| 位或运算 flags = flags | 42; 可重载
bitor |的另一种表达
第十三级别
&& 逻辑且运算 if( conditionA && conditionB ) … 可重载
and &&的另一种表达
第十四级别
|| 逻辑或运算 if( conditionA || conditionB ) ... 可重载
or ||的另一种表达
第十五级别(具有右结合性)
? : 条件运算符 int i = (a > b) ? a : b; 不可重载
第十六级别(具有右结合性)
= 赋值 int a = b; 可重载
+= 加赋值运算 a += 3; 可重载
-= 减赋值运算 b -= 4; 可重载
*= 乘赋值运算 a *= 5; 可重载
/= 除赋值运算 a /= 2; 可重载
%= 模赋值运算 a %= 3; 可重载
&= 位且赋值运算 flags &= new_flags; 可重载
and_eq &= 的另一种表达
^= 位异或赋值运算 flags ^= new_flags; 可重载
xor_eq ^=的另一种表达
|= 位或赋值运算 flags |= new_flags; 可重载
or_eq |=的另一种表达
<<= 位左移赋值运算 flags 可重载
>>= 位右移赋值运算 flags >>= 2; 可重载
第十七级别
throw 异常抛出 throw EClass(“Message”); 不可重载
第十八级别
, 逗号分隔符 for( i = 0, j = 0; i < 10; i++, j++ ) … 可重载
编辑 (opens new window)
#C++
上次更新: 2022/10/03, 09:24:26
C++ 数据类型
命名空间

← C++ 数据类型 命名空间→

最近更新
01
ESP32-网络摄像头方案
06-14
02
ESP32-PWM驱动SG90舵机
06-14
03
ESP32-实时操作系统freertos
06-14
更多文章>
Theme by Vdoing | Copyright © 2019-2025 DC Wang All right reserved | 辽公网安备 21021102001125号 | 吉ICP备20001966号-2
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式