C++运算符优先级一览表

VC++常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...)https://blog.csdn.net/chenlycly/article/details/124272585C++软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续更新...)https://blog.csdn.net/chenlycly/article/details/125529931C++软件分析工具从入门到精通案例集锦(专栏文章正在更新中...)https://blog.csdn.net/chenlycly/article/details/131405795C/C++基础与进阶(专栏文章,持续更新中...)https://blog.csdn.net/chenlycly/category_11931267.html 当一个复杂的表达式中包含了多个运算符时,要读懂表达式的含义,就需要搞清楚这些运算符的优先级。下面完整地罗列了所有C++运算符的优先级,以供查阅和参考。

|----------------|-------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------|
| Precedence | Operator | Description | Example | Associativity |
| 1 | () \[\] -> . :: ++ -- | Grouping operator Array access Member access from a pointer Member access from an object Scoping operator Post-increment Post-decrement | (a + b) / 4; array4 = 2; ptr->age = 34; obj.age = 34; Class::age = 2; for( i = 0; i < 10; i++ ) ... for( i = 10; i > 0; i-- ) ... | left to right |
| 2 | ! ~ ++ -- - + * & (type) sizeof | Logical negation Bitwise complement Pre-increment Pre-decrement Unary minus Unary plus Dereference Address of Cast to a given type Return size in bytes | if( !done ) ... flags = ~flags; for( i = 0; i < 10; ++i ) ... for( i = 10; i > 0; --i ) ... int i = -1; int i = +1; data = *ptr; address = &obj; int i = (int) floatNum; int size = sizeof(floatNum); | right to left |
| 3 | ->* .* | Member pointer selector Member pointer selector | ptr->*var = 24; obj.*var = 24; | left to right |
| 4 | * / % | Multiplication Division Modulus | int i = 2 * 4; float f = 10 / 3; int rem = 4 % 3; | left to right |
| 5 | + - | Addition Subtraction | int i = 2 + 3; int i = 5 - 1; | left to right |
| 6 | << >> | Bitwise shift left Bitwise shift right | int flags = 33 << 1; int flags = 33 >> 1; | left to right |
| 7 | < <= > >= | Comparison less-than Comparison less-than-or-equal-to Comparison greater-than Comparison geater-than-or-equal-to | if( i < 42 ) ... if( i <= 42 ) ... if( i > 42 ) ... if( i >= 42 ) ... | left to right |
| 8 | == != | Comparison equal-to Comparison not-equal-to | if( i == 42 ) ... if( i != 42 ) ... | left to right |
| 9 | & | Bitwise AND | flags = flags & 42; | left to right |
| 10 | ^ | Bitwise exclusive OR | flags = flags ^ 42; | left to right |
| 11 | | | Bitwise inclusive (normal) OR | flags = flags | 42; | left to right |
| 12 | && | Logical AND | if( conditionA && conditionB ) ... | left to right |
| 13 | || | Logical OR | if( conditionA || conditionB ) ... | left to right |
| 14 | ? : | Ternary conditional (if-then-else) | int i = (a > b) ? a : b; | right to left |
| 15 | = += -= *= /= %= &= ^= |= <<= >>= | Assignment operator Increment and assign Decrement and assign Multiply and assign Divide and assign Modulo and assign Bitwise AND and assign Bitwise exclusive OR and assign Bitwise inclusive (normal) OR and assign Bitwise shift left and assign Bitwise shift right and assign | int a = b; a += 3; b -= 4; a *= 5; a /= 2; a %= 3; flags &= new_flags; flags ^= new_flags; flags |= new_flags; flags <<= 2; flags >>= 2; | right to left |
| 16 | , | Sequential evaluation operator | for( i = 0, j = 0; i < 10; i++, j++ ) ... | left to right |

相关推荐
zmzb01031 小时前
C++课后习题训练记录Day157
开发语言·c++
从零开始的代码生活_4 小时前
C++ 多态详解:虚函数、动态绑定、抽象类与虚表原理
开发语言·c++·后端·学习·算法
大彼方..5 小时前
C++ STL Vector 深度剖析:从内存管理到性能优化
开发语言·c++
炸薯条!5 小时前
从零开始学C++ (内存管理)
java·jvm·c++
cpp_25017 小时前
P6625 [省选联考 2020 B 卷] 卡牌游戏
数据结构·c++·算法·前缀和·贪心·洛谷题解·省选
旖-旎10 小时前
《LeetCode 416 分割等和子集》
c++·算法·leetcode·动态规划·背包问题
Mortalbreeze10 小时前
深入理解 Linux 线程机制(四):线程同步——条件变量与信号量
linux·运维·服务器·开发语言·c++
郝学胜-神的一滴11 小时前
中级OpenGL教程 020:巧用数组与循环实现多点点光源渲染,告别冗余代码重构方案
c++·unity·游戏引擎·godot·图形渲染·unreal
zmzb010311 小时前
C++课后习题训练记录Day160
开发语言·c++
沫璃染墨11 小时前
现代C++⊂C++11篇(一)列表初始化全解 & std::initializer_list
开发语言·c++