!= 比 & 的优先级高
#define ACQU_OPTION_WEIXIN 8
int options = 7;
int a = options & ACQU_OPTION_WEIXIN ;
则a 的结果应该是0;
但以下的代码却进入了assert断言,很意外,因为 a == 0;
if (options & ACQU_OPTION_WEIXIN != 0) ——代码1
{
assert(0);
}
细思一下,发现是运算符的优先级问题, != 比 & 的优先级高,所以代码1实际上等价于:if (options & (ACQU_OPTION_WEIXIN != 0))
(ACQU_OPTION_WEIXIN != 0) 的结果为true,即为1,if (options & 1) 当然是true
所以代码1改为 if (options & ACQU_OPTION_WEIXIN) 即可
附上运算符优先级:
|
优先级
|
运算符
|
名称或含义
|
使用形式
|
结合方向
|
说明
|
|
1
|
后置++ |
后置自增运算符
|
变量名++
|
左到右
|
|
| 后置-- | 后置自减运算符 | 变量名-- | |||
|
[ ]
|
数组下标 |
数组名[整型表达式]
|
|||
|
( )
|
圆括号
|
(表达式)/函数名(形参表)
|
|||
|
.
|
成员选择(对象)
|
对象.成员名
|
|||
|
->
|
成员选择(指针)
|
对象指针->成员名
|
|||
|
2
|
-
|
负号运算符
|
-表达式
|
右到左
|
单目运算符
|
|
(类型)
|
强制类型转换
|
(数据类型)表达式
|
|||
|
前置++
|
前置自增运算符
|
++变量名
|
单目运算符
|
||
|
前置--
|
前置自减运算符
|
--变量名
|
单目运算符
|
||
|
*
|
取值运算符
|
*指针表达式
|
单目运算符
|
||
|
&
|
取地址运算符
|
&左值表达式
|
单目运算符
|
||
|
!
|
逻辑非运算符
|
!表达式
|
单目运算符
|
||
|
~
|
按位取反运算符
|
~表达式
|
单目运算符
|
||
|
sizeof
|
长度运算符
|
sizeof 表达式/sizeof(类型)
|
|||
|
3
|
/
|
除
|
表达式/表达式
|
左到右
|
双目运算符
|
|
*
|
乘
|
表达式*表达式
|
双目运算符
|
||
|
%
|
余数(取模)
|
整型表达式%整型表达式
|
双目运算符
|
||
|
4
|
+
|
加
|
表达式+表达式
|
左到右
|
双目运算符
|
|
-
|
减
|
表达式-表达式
|
双目运算符
|
||
|
5
|
<<
|
左移
|
表达式<<表达式
|
左到右
|
双目运算符
|
|
>>
|
右移
|
表达式>>表达式
|
双目运算符
|
||
|
6
|
>
|
大于
|
表达式>表达式
|
左到右
|
双目运算符
|
|
>=
|
大于等于
|
表达式>=表达式
|
双目运算符
|
||
|
<
|
小于
|
表达式<表达式
|
双目运算符
|
||
|
<=
|
小于等于
|
表达式<=表达式
|
双目运算符
|
||
|
7
|
==
|
等于
|
表达式==表达式
|
左到右
|
双目运算符
|
|
!=
|
不等于
|
表达式!= 表达式
|
双目运算符
|
||
|
8
|
&
|
按位与
|
整型表达式&整型表达式
|
左到右
|
双目运算符
|
|
9
|
^
|
按位异或
|
整型表达式^整型表达式
|
左到右
|
双目运算符
|
|
10
|
|
|
按位或
|
整型表达式|整型表达式
|
左到右
|
双目运算符
|
|
11
|
&&
|
逻辑与
|
表达式&&表达式
|
左到右
|
双目运算符
|
|
12
|
||
|
逻辑或
|
表达式||表达式
|
左到右
|
双目运算符
|
|
13
|
?:
|
条件运算符
|
表达式1? 表达式2: 表达式3
|
右到左
|
三目运算符
|
|
14
|
=
|
赋值运算符
|
变量=表达式
|
右到左
|
|
|
/=
|
除后赋值
|
变量/=表达式
|
|||
|
*=
|
乘后赋值
|
变量*=表达式
|
|||
|
%=
|
取模后赋值
|
变量%=表达式
|
|||
|
+=
|
加后赋值
|
变量+=表达式
|
|||
|
-=
|
减后赋值
|
变量-=表达式
|
|||
|
<<=
|
左移后赋值
|
变量<<=表达式
|
|||
|
>>=
|
右移后赋值
|
变量>>=表达式
|
|||
|
&=
|
按位与后赋值
|
变量&=表达式
|
|||
|
^=
|
按位异或后赋值
|
变量^=表达式
|
|||
|
|=
|
按位或后赋值
|
变量|=表达式
|
|||
|
15
|
,
|
逗号运算符
|
表达式,表达式,…
|
左到右
|
从左向右顺序运算
|
!= 比 & 的优先级高的更多相关文章
- css中同时用头部引入和外部引入对同一个标签进行样式设置,哪一个优先级高。
这段是html中的代码 <!doctype html> <html lang="en"> <head> <meta charset=&qu ...
- JavaScript作用域,内部函数比参数优先级高
var x=0; f(); console.log(x); var f=function(){ x=1; } f(); console.log(x); function f(){ x=2; } f ...
- CPU被夺走的三种状态 执行时间久了 IO操作让cpu等待 被优先级高的抢占
CPU被夺走的三种状态 执行时间久了 IO操作让cpu等待 被优先级高的抢占
- sql关系型运算符优先级高到低为:not >and> or
今天在做项目的时候发现一个查询的结果不太对. 随后拿出sql仔细端详一番,where条件中发现一个条件本应该是 …… xx in (‘13’,‘14’)……,却写成了…… xx = ‘13’ or x ...
- jenkins执行自动化用例(详细、有用、mark 优先级高高高)
http://blog.sina.com.cn/s/blog_68f262210102vx8o.html 第七章 测试用例接入jenkins自动运行 ------Web自动化测试之Webdriver+ ...
- SpringBoot application.properties (application.yml)优先级从高到低
SpringBoot application.properties(application.yml) 优先级从高到低 SpringBoot配置文件优先级从高到低 =================== ...
- Linux资源管理-IO优先级
前一篇博客介绍了利用 cgroup 来控制进程的 CPU和内存使用情况, 这次补上使用 cgroup 来控制进程的IO优先级的方法. 前提条件 如果想控制进程的IO优先级, 需要内核的支持, 内核编译 ...
- Cocos2dx中线程优先级
Cocos2dx中线程优先级问题 不论是ios还是android,遇到耗时的任务都要另起线程处理,否则程序不能及时用户的反馈.游戏中如果一圈循环不能在1/frameRate(帧率是30则1/30)秒内 ...
- C#夯实基础之多线程三:线程的优先级
一.为什么需要优先级--线程调度的问题 在现实生活中,优先级是一个很常见的现象:在火车站,如果你是孕妇,你是可以走进站中的专门绿色通道的,可以提前上火车以免拥挤:火警119匪警110出警的时候,都是人 ...
随机推荐
- JavaScript闭包 懂不懂由你反正我是懂了
原文链接:http://www.jb51.net/article/28611.htm 越来越觉得国内没有教书育人的氛围,为了弄懂JS的闭包,我使出了我英语四级吃奶的劲去google上搜寻着有关闭包的解 ...
- 20145101《Java程序设计》第一周学习总结
20145101 <Java程序设计>第1周学习总结 教材学习内容总结 开学的第一周,通过课上老师的介绍和课下阅读教材我简单的了解java的发展历程,了解了JVM.JRE.JDK分别是什么 ...
- 思考卷积神经网络(CNN)中各种意义
原文:https://blog.csdn.net/aimreant/article/details/53145063 思考卷积神经网络(CNN)中各种意义 只是知道CNN是不够,我们需要对其进行解剖, ...
- Linq join right join left join
代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Syst ...
- (转)Spring Boot(一)
(二期)4.springboot的综合讲解 [课程四]springbo...概念.xmind64.5KB [课程四]spring装配方式.xmind0.2MB [课程四预习]spri...解读.xmi ...
- 解决Eclipse 项目报错:Unbound classpath container: ‘JRE System Library [JavaSE-1.7]
MyEclipse出现下面两条报错: The project cannot be built until build path errors are resolved HelloWord Unknow ...
- dubbo 配置属性
1,服务方 <dubbo:application name="demo-provider" /> <!-- 使用zookeeper注册中心暴露服务地址 --> ...
- The way to Go(7): 常量
Reference: Github: Go Github: The way to Go 常量 常量使用关键字 const 定义,用于存储不会改变的数据. const identifier [type] ...
- ovs-ofctl: s1 is not a bridge or a socket 解决方法
参考: ovs-vsctl: Error detected while setting up bridge ovs-ofctl: s1 is not a bridge or a socket 解决方法 ...
- Ubuntu 14.04下 Java通用安装方法
参考: 解决Floodlight1.2+Mininet问题及使用安装 Ubuntu下安装JDK1.7图文详解 Ubuntu 14.04下 Java通用安装方法 1.到oracle官网下下载对应jdk包 ...