运算符优先级
下表按照优先级顺序列出了C++的全部操作符。该表以两种颜色分割成不同的段,每段内各个操作符的优先级相同,且都高于后面各段中的操作符。
结合律 | 运算符 | 功能 | 用法 |
说明 |
|
L | :: | 全局作用域 | ::name | ||
L | :: | 类作用域 | class::name | ||
L | :: | 命名空间作用域 | namespace::name | ||
L | . | 成员选择 | object.member | ||
L | -> | 成员选择 | pointer->member | ||
L | [] | 下标 | variable[expr] | ||
L | () | 函数调用 | name(expr_list) | ||
L | () | 类型构造 | type(expr_list) | ||
R | ++ | 后自增操作 | lvalue++ | ||
R | -- | 后自减操作 | lvalue-- | ||
R | typeid | 类型ID | typeid(type) | ||
R | typeid | 运行时类型ID | typeid(expr) | ||
R | explicit cast | 类型转换 | cast_name<type>(expr) | ||
R | sizeof | 对象的大小 | sizeof expr | ||
R | sizeof | 类型的大小 | sizeof(type) | ||
R | sizeof... | 参数包的大小 | sizeof...(name) | ||
R | ++ | 前自增操作 | ++lvalue | ||
R | -- | 前自减操作 | --lvalue | ||
R | ~ | 位求反 | ~expr | ||
R | ! | 逻辑非 | !expr | ||
R | - | 一元负号 | -expr | ||
R | + | 一元正号 | +expr | ||
R | * | 解引用 | *expr | ||
R | & | 取地址 | &expr | ||
R | () | 类型转换 | (type)expr | ||
R | new | 创建对象 | new type | ||
R | delete | 释放对象 | delete type | ||
R | delete[] | 释放数组 | delete[]expr | ||
R | noexcept | 能否抛出异常 | noexcept(expr) | ||
L | ->* | 指向成员操作的指针 | ptr->*ptr_to_member | ||
L | .* | 指向成员操作的指针 | obj.*ptr_to_member | ||
L | * | 乘法 | expr * expr | ||
L | / | 除法 | expr / expr | ||
L | % | 求模(求余) | expr % expr | ||
L | + | 加法 | expr + expr | ||
L | - | 减法 | expr - expr | ||
L | << | 向左移位 | expr << expr | ||
L | >> | 向右移位 | expr >> expr | ||
L | < | 小于 | expr < expr | ||
L | <= | 小于等于 | expr <= expr | ||
L | > | 大于 | expr > expr | ||
L | >= | 大于等于 | expr >= expr | ||
L | == | 相等 | expr == expr | ||
L | != | 不相等 | expr != expr | ||
L | & | 位与 | expr & expr | ||
L | ^ | 位异或 | expr ^ expr | ||
L | | | 位或 | expr | expr | ||
L | && | 逻辑与 | expr && expr | ||
L | || | 逻辑或 | expr || expr | ||
R | ? : | 条件 | expr ? expr : expr | ||
R | = | 赋值 | lvalue = expr | ||
R | *=, /=, %= | 复合赋值 | lvalue += expr end so on | ||
R | +=, -= | ||||
R | <<=, >>= | ||||
R | &=, |=, ^= | ||||
R | throw | 抛出异常 | throw expr | ||
L | , | 逗号 | expr, expr |
cast-name是static_cast、dynamic_cast、const_cast和reinterpret_cast中的一种。dynamic_cast支持运行时类型识别。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库