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
……

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

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

C++操作符的优先级的更多相关文章

  1. python学习笔记七--数据操作符的优先级

    一.混合表达式哪个部分先计算: 1. 取决于操作符的优先级,不同操作符的优先级是不一样的,例如‘*’的优先级高于‘+’ 2. 上节的表格里越靠后,优先级越高. 3 . 同一表达式的相同操作符是按从左到 ...

  2. C、C++中“*”操作符和“后++”操作符的优先级

    假设有如下的定义 char carr[] = {"test"}; char cp = carr; 那么表达式 *cp++; 的右值是什么呢? 这个表达式在数组遍历的程序中非常常见, ...

  3. C语言中操作符的优先级大全

    C语言中操作符的优先级大全, 当然c++, Objective-C,大部分语言都试用. 下面是来自The C Programming Language 2th的总结. OperatorsAssocia ...

  4. 5.2 C++重载操作符的优先级

    参考:http://www.weixueyuan.net/view/6380.html 总结: 重载操作符不能改变操作符的优先级和语法特性. 重载操作符不能改变操作符的优先级和语法特性.例如上一节复数 ...

  5. Lua操作符的优先级

    lua 操作符的优先级 lua操作符的优先级 如表所示(从高到低) 在二元操作符中,除了指数操作符 “^” 和连接操作符  “..”  是 ”右结合” 的,是所有其他操作符都是 “左结合” 的.因此如 ...

  6. Python中的操作符及优先级

    附注: 1.  Python中的按位运算符是把数字看作二进制来进行计算的.Python中的按位运算法则如下: 按位与   ( bitwise and of x and y ) &  举例: 5 ...

  7. 关于c++操作符的优先级

    优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级. 所有的优先级中,只有三个优先级是从右至左结合的,它们是单目运算符.条件运算符.赋值运算符.其它的都是从左至右结合. 具有最 ...

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

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

  9. 【转】C++操作符的优先级 及其记忆方法

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

随机推荐

  1. Linux学习:curl 与 wget命令

    curl和wget命令都是Linux下的工具,可以用来下载文件. 一.wget 例1: wget http://www.minjieren.com/wordpress-3.1-zh_CN.zip 下载 ...

  2. Nginx 开启 debug 日志的办法

    译序:一般来讲,Nginx 的错误日志级别是 error,作为 Nginx 用户来讲,你设置成 info 就足够用了.         但有时有些难以挖掘的 bug,需要看到更详细的 debug 级别 ...

  3. nodejs笔记2——请求路由

    对于不同的URL请求,服务器应该有不同的反应.我们要为路由提供请求的URL和其他需要的GET及POST参数,随后路由需要根据这些数据来执行相应的代码.我们需要的所有数据都会包含在request对象中, ...

  4. SRBF Lighting

     SRBF的全称是Spherical Radial Basis Function,笔者擅自翻译为球面放射基底函数.由于SRBF并不怎么出名,相对来说,SH(Spherical Harmonic)球 ...

  5. swift优秀学习博客

    http://www.00red.com/ http://www.cnblogs.com/kenshincui/  优秀的某博客,包含大量iOS的全面的总结 https://github.com/Co ...

  6. C++赋值函数详解

    赋值函数        每个类只有一个赋值函数         由于并非所有的对象都会使用拷贝构造函数和赋值函数,程序员可能对这两个函数有些轻视.  1,如果不主动编写拷贝构造函数和赋值函数,编译器将 ...

  7. 第一篇:NSTread线程的创建

    #import "ViewController.h" //导入头文件 #import <pthread.h> @interfaceViewController () @ ...

  8. uboot编译: uboot编译配置和编译过程

    jz2440: 韦东山Linux视频第1期_裸板_UBoot_文件系统_驱动初步\第09课第2节 u-boot分析之Makefile结构分析.WMV <嵌入式linux完全开发手册> 15 ...

  9. 面向对象程序设计-C++ Type conversion (Static) & Inheritance & Composition【第十二次上课笔记】

    这节课继续讲解了 static 作为静态数据成员 / 成员函数的用法 具体详解我都已注释出来了,大家可以慢慢看 有任何问题都可以在这篇文章下留言我会及时解答 :) //static 静态数据成员 // ...

  10. 2014 HDU多校弟六场J题 【模拟斗地主】

    这是一道5Y的题目 有坑的地方我已在代码中注释好了 QAQ Ps:模拟题还是练的太少了,速度不够快诶 //#pragma comment(linker, "/STACK:16777216&q ...