牢记操作符优先级

先看一道题:

unsigned char a = 0x00;

if( a & 0x01 != 0x01 )

{

cout  << " a != 0x01";

}

else

cout << "a == 0x00";

结果是什么?思考一下。

如果有答案了,再看看下面的关于操作符优先级的介绍:

可以先笼统,再具体。

笼统:

记住一个最高的:构造类型的元素或成员及小括号。

记住一个最低的:逗号。

中间的一,二,三,赋值。

二目中:算术,位移,关系,位操作,逻辑。

具体:

一个最高的:

:: 全局作用域 类作用域 名字空间 

. 成员选择

->成员选择

[ ]下标

()函数调用

()类型构造

一个最低的:

,逗号

中间的:

先看二目,算术,位移,关系,位操作,逻辑

* ,  / , % , + , -

<< , >> 

< , <= , > , >= , == , !=

& , ^ , |

&& , ||

三目: ? :

赋值:= 

复合赋值: *= , /= , %=, +=, -=, <<=, >>=, &=, ^=, |=

在看一目:可以两端抓。

前端:->往右方向记

++,--(后);typeid (类型ID,运行时ID);显示强制类型转换;sizeof (对象大小,类型大小);++,--(前)

后端:<-往左方向记

~ ; ! ; - ; + ; *解引用 ; &取地址 ; ()类型转换 ; new ; delete ; delete[]

总表:


:: 全局作用域 类作用域 名字空间 

. 成员选择

->成员选择

[ ]下标

()函数调用

()类型构造


++,--(后);typeid (类型ID,运行时ID);显示强制类型转换;sizeof (对象大小,类型大小);++,--(前)

~ ; ! ; - ; + ; *解引用 ; &取地址 ; ()类型转换 ; new ; delete ; delete[]


->*, .*

* ,  / , % , + , -

<< , >> 

< , <= , > , >= , == , !=

& , ^ , |

&& , ||


 ? :


 *= , /= , %=, +=, -=, <<=, >>=, &=, ^=, |=


throw

,

红色标记的为特殊的,另外记忆。

明白了以上内容,刚开始的那道题应该也会做了,关键是 a & 0x01 != 0x01 ;在二目中,算术,位移,关系,位操作,逻辑; a & 0x01 != 0x01 等价为 a &  ( 0x01 != 0x01);所以结果为:a == 0x00。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值