C++操作符的优先级

一文搞懂C++常见运算符优先级 文章介绍了初学C++的同学在算术表达式中容易混淆的部分,通过两个例子演示了代码的运算顺序和结果,并总结了C++中常见运算符的优先级顺序。总之,这篇文章可以帮助初学者更好地理解C++中的运算符优先级 阅读详情


C++操作符的优先级


C++操作符的优先级

操作符及其结合性

功能

用法

L
L
L
::
::
::
全局作用域
类作用域
名字空间作用域
::name
class::name
namespace::name
L
L
L
L
L
.
->
[]
()
()
成员选择
成员选择
下标
函数调用
类型构造
object.member
pointer->member
variable[expr]
name(expr_list)
type(expr_list)
R
R
R
R
R
++
--
typeid
typeid
显示强制类型转换
后自增操作
后自减操作
类型ID
运行时类型ID
类型转换
lvalue++
lvalue--
typeid(type)
typeid(expr)
cast_name<type>(expr)
R
R
R
R
R
R
R
R
R
R
R
R
R
R
sizeof
sizeof
++
--
~
!
-
+
*
&
()
new
delete
delete[]
对象的大小
类型的大小
前自增操作
前自减操作
位求反
逻辑非
一元负号
一元正号
解引用
取地址
类型转换
创建对象
释放对象
释放数组
sizeof expr
sizeof(type)
++lvalue
--lvalue
~expr
!expr
-expr
+expr
*expr
&expr
(type)expr
new type
delete expr
delete []expr
L
L
->*
.*
指向成员操作的指针
指向成员操作的指针
ptr->*ptr_to_member
obj.*ptr_to_member
L
L
L
*
/
%
乘法
除法
求模(求余)
expr * expr
expr / expr
expr % expr
L
L
+
-
加法
减法
expr + expr
expr - expr
L
L
<<
>>
位左移
位右移
expr << expr
expr >> expr
L
L
L
L
<
<=
>
>=
小于
小于或等于
大于
大于或等于
expr < expr
expr <= expr
expr > expr
expr >= expr
L
R
==
!=
相等
不等
Expr == expr
Expr != expr
R&位与 Expr & expr
R^位异或 Expr ^ expr
R|位或 Expr | expr
R&&逻辑与 Expr && expr
R||逻辑或 Expr || expr
R?:条件操作 Expr ? expr : expr
R
R
R
R
R
=
*=,/=,%=
+=,-=
<<=,>>=
&=,|=,^=
赋值操作
符合赋值操作

Lvalue= expr
Lvalue+= expr
……

Rthrow抛出异常 Throw expr
L,逗号 Expr, expr
记忆方法:

--摘自《C语言程序设计实用问答》     -吕凤翥     吕     涛著   
    问题:如何记住运算符的15种优先级和结合性?   
    解答:C语言中运算符种类比较繁多,优先级有15种,结合性有两种。   
    如何记忆两种结合性和15种优先级?下面讲述一种记忆方法。   
    结合性有两种,一种是自左至右,另一种是自右至左,大部分运算符的结合性是自左至右,只有单目运算符、三目运算符的赋值运算符的结合性自右至左。   
    优先级有15种。记忆方法如下:   
    记住一个最高的:构造类型的元素或成员以及小括号。   
    记住一个最低的:逗号运算符。   
    剩余的是一、二、三、赋值。   
    意思是单目、双目、三目和赋值运算符。   
    在诸多运算符中,又分为:   
    算术、关系、逻辑。   
    两种位操作运算符中,移位运算符在算术运算符后边,逻辑位运算符在逻辑运算符的前面。再细分如下:   
    算术运算符分     *,/,%高于+,-。   
    关系运算符中,》,》=,《,〈=高于==,!=。   
    逻辑运算符中,除了逻辑求反(!)是单目外,逻辑与(&&)高于逻辑或(||)。   
    逻辑位运算符中,除了逻辑按位求反(~)外,按位与(&)高于按位半加(^),高于按位或(|)。   
    这样就将15种优先级都记住了,再将记忆方法总结如下:   
    去掉一个最高的,去掉一个最低的,剩下的是一、二、三、赋值。双目运算符中,顺序为算术、关系和逻辑,移位和逻辑位插入其中。 

C++ 操作符优先级 在C++中,操作符优先级决定了表达式中各个操作符的执行顺序。在上面的示例代码中,我们使用了不同的操作符,并利用它们的优先级进行了计算。在第一个示例中,加法操作符的优先级低于乘法操作符,所以乘法先进行,然后再进行加法。通过以上示例,我们可以清楚地看到不同操作符的优先级在表达式计算中的影响。在第二个示例中,逻辑AND操作符的优先级高于逻辑OR操作符,所以在计算逻辑表达式时先进行AND操作,再进行OR操作。在第三个示例中,条件操作符(?在C++中,操作符可以分为多个级别,每个级别都有不同的优先级。 阅读详情

相关推荐

C++ 操作符优先级详解

第二个表达式中,由于 && 操作符的优先级比 < 操作符和 < 操作符的优先级都要高,所以先计算 a < b 和 b < c,最终将它们的结果作为 && 操作符的操作数进行计算。因为 a < b 的结果是 false,所以整个表达式的值为 false,res2 的值也为 0。: 操作符的优先级比 > 操作符的优先级低,所以 a > b 先被计算。第一个表达式中,由于前置自增操作符的优先级比后置自减操作符高,所以 ++a 先被执行,并且 b-- 被延迟到表达式计算完毕之后再执行。最终 res1 的值为 2。

带你成为别人眼中的大佬! 771

c++运算符优先级归纳

c++运算符优先级

zhaominyong的专栏 6万+

USB摄像头开发实战:从参数配置到图像采集的完整流程(Python+OpenCV)

本文详细介绍了USB摄像头开发的完整流程,从参数配置到图像采集,使用Python和OpenCV实现。内容涵盖硬件原理、环境配置、参数调优及高级优化技巧,帮助开发者解决常见问题如分辨率设置、帧率控制和灯光频闪等,提升开发效率。

star的博客 235

C++特殊符号:【优先级】

1级优先级 左结合   () 圆括号    [ ] 下标运算符    -&gt; 指向结构体成员运算符    . 结构体成员运算符    2级优先级 右结合    ! 逻辑非运算符    ~ 按位取反运算符    ++ 前缀增量运算符    -- 前缀增量运算符    + 正号运算符   - 负号运算符    (类型) 类型转换运算符    * 指针运算符    &am...

发现问题,解决问题。 2697

Colmap参数调优实战:如何通过5个关键设置提升3D重建精度

本文深入探讨Colmap参数调优实战,通过5个关键设置显著提升3D重建精度。重点解析特征匹配参数、BA优化配置、初始化策略、资源分配及动态调整方法,结合量化数据和实际案例,帮助开发者精准优化重建流程,适用于古建筑扫描、无人机航拍等多种场景。

weixin_30872157的博客 432

Hopfield神经网络(HNN)详解

Hopfield神经网络是一种比较特殊的网络,它不像一般的神经网络那样有输入层和输出层,并且通过训练来改变神经网络中的参数,最终实现预测、识别等功能。Hopfield网络只有一群神经元节点,所有节点之间相互连接,形式如下: 虽然有些文章会画出像深度神经网络那样有输入输出的图,并且输出后又返回输入,但本质上就是多个节点之间的全连接,也就是上面的图形。Hopfield神经网络主要有两个应用:一是起到类似储存器的作用,也就是我们把多个序列或图片输入这个网络,最终这个网络会以神经元之间连接权重的形式储存这

weixin_60737527的博客 4万+

C语言 运算符

A = 0011 1100 B = 0000 1101 ----------------- A = 0011 1100 B = 0000 1101 A&B = 0000 1100 相同不变 不同为0 A = 0011 1100 B = 0000 1101 A|B = 0011 1101 相同不同都为1 0为0 A = 0011 1100 B = 0000 1101 A^B = 0011 0001 相同为0 不同为1 A = 0011 110...

qq_42095701的博客 324

YOLOv11 网络结构详解:一文看懂 Backbone、Head、C3k2、SPPF 和 Detect 检测头

在使用 YOLOv11 进行目标检测时,我们经常会接触到或这样的模型配置文件。backbone和head分别是什么意思?ConvC3k2SPPFC2PSA这些模块分别起什么作用?P3/8、P4/16、P5/32 代表什么?为什么最后 Detect 要同时接收 3 个不同尺度的特征图?YOLOv11n、YOLOv11s、YOLOv11m、YOLOv11l、YOLOv11x 的区别在哪里?

learnerYC的博客 1815

C/C++操作符的优先级和结合性问题浅析

两个相邻操作符的执行顺序由它们的优先级决定。例如: a + b*c,在这个表达式中,乘法和加法操作符是两个相邻的操作符,由于乘法的优先级比加法高,所以乘法运算先于加法运算执行。编译器在这里别无选择,它必须先执行乘法运算。 如果它们的优先级相同,它们的执行顺序由它们的结合性决定。例如:a + b + c,由于 + 操作符的结合性是由左到右(L-R),所以先计算a+b,然后计算(a+b)+c。 除...

Reborn Lee 3466

Android Profiler 帧率优化实战与性能调优

本文详细介绍了使用Android Profiler进行帧率优化与性能调优的实战方法。通过分析主线程状态、FPS曲线和渲染阶段耗时,精准定位卡顿根源,并提供减少过度绘制、优化绘制命令及改善资源使用的具体策略。文章结合电商、游戏等真实案例,帮助开发者有效解决卡顿问题,提升应用流畅度。

palm99的专栏 537

【问题解决】解决 Python `PermissionError` 权限不足:文件/进程/端口全场景修复

本文总结了Python程序中常见的权限问题及解决方案,包括文件、进程和端口权限错误。文件权限问题通常由文件占用、权限不足或路径错误引起;进程问题多因权限不足或系统限制;端口问题则与端口占用、防火墙或特权端口相关。解决方案提供了详细的代码实现:文件权限管理器类(FilePermissionManager)包含检查权限(check_permission)、修复权限(fix_permission)、安全写入(safe_write)和安全删除(safe_delete)等方法,通过异常处理和临时文件等技术确保操作安全

博客 359

C++操作符优先级

C++操作符的优先级 操作符及其结合性 功能 用法 L L L :: :: :: 全局作用域  类作用域  名字空间作用域 ::name class::name namespace::name L L L L L . -> []

1009

大数据领域存算分离:教育行业的数据应用探索

在当今数字化时代,教育行业积累了海量的数据,如学生的学习记录、考试成绩、在线学习行为等。如何高效地存储、管理和分析这些数据,以挖掘其潜在价值,为教育决策、教学改进和学生个性化发展提供支持,成为教育行业面临的重要挑战。大数据领域的存算分离技术为解决这一问题提供了新的思路和方法。本文旨在探索存算分离技术在教育行业的数据应用,分析其原理、优势和实际应用场景,为教育行业的数据管理和分析提供参考。本文共分为十个部分。第一部分介绍背景,包括目的和范围、预期读者、文档结构概述和术语表;

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 814

C++操作符优先级与结合性全解析

C++操作符优先级与结合性决定了表达式的求值顺序,是程序正确性的关键。本文系统梳理了C++操作符的17个优先级等级,从最高优先级的括号与成员访问到最低优先级的逗号操作符,通过思维导图和实例详细解析了常见陷阱。重点包括:单目操作符的右结合特性、前缀/后缀自增区别、关系与逻辑运算的优先级关系、三目运算符的右结合性,以及赋值运算符的低优先级特性。特别强调了混淆=与==的常见错误,建议使用括号明确运算顺序以避免隐蔽bug。理解这些规则对编写正确高效的C++代码至关重要。

bkspiderx的博客 1124

Aduino 通过I2C接口读取MPU6050模块数据

Aduino ESP9266通过I2C接口读取MPU6050模块数据 MPU6050模块 原理图 所需库:Adafruit_MPU6050 Adafruit_BusIO Adafruit Unified Sensor 接线示意图 ESP8266---MPU6050 VCC -- 3.3v GND -- GND D2 -- SDA D1 -- SCL 示例程序代码 #include <Adafruit_MPU6050.h> #include <Adafruit

perseverance51博客 621

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

C++操作符的优先级 及其记忆方法

C++操作符的优先级 及其记忆方法   优先级 操作符 描述 例子 结合性 1 () [] -> . :: ++ -- 调节优先级的括号操作符 数组下标访问操作符 通过指向对象的指针访问成员的操作符 通过对象本身访问成员的操作符 作用域操作符 后置自增操作符 后置自减操作符 (a +

mengyuchenxi的博客 321

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

c++ 操作符大全-算术操作符、关系操作符、逻辑操作符、位操作符、自增自减操作符、赋值操作符、条件操作符、逗号操作符、操作符优先级

这里写目录标题操作符1、算术操作符2、关系操作符3、逻辑操作符4、位操作符5、自增自减操作符6、赋值操作符7、条件操作符8、逗号操作符9、操作符优先级 操作符 计算机程序可以看作一串运算式,可以对各种运算类型进行运算。这种运算不仅仅是代数上的加减乘除,也可以是在计算机中存在的数据类型的改变,还可以是一种抽象的操作。比如说我们定义组装两个机械零件,那么我们也可以定义一种已知的操作“+”,使其能够表示组装零件的操作,总之,对于基本的整型、浮点数等的种种运算操作,我们都可以用操作符(Operator)来表示。操作

m0_62870588的博客 6435

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

上一篇: Red Hat9 系统性能和进程管理
下一篇: Linux shell I/O重定向详解
ldong2007
博客等级 码龄19年 17粉丝 10原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值