c/c++系列的运算符优先级总结
经常写程序的时候,遇到运算符优先级的问题,令我汗颜的是,查书的次数挺多的……狠狠心,总结下。不过还要结合大量的编程实践来深入脑海。
1、首先永远忘不了的是,逗号运算符级别最低,毫无争议的还有()括起来的,人工设定了最高优先级,先算括号里的。
2、非人为的,就是四个,函数调用(),[]数组下标,点运算符,间接->运算符。他们是优先级最高的,从左到右。拿->记忆结合性
3、还有最起码知道,所有的单目运算符具有相同级别的优先级,记住是所有的。且记住都是从右到左
比如:正负号+i和-i,自增自减++i和i--,取地值&a,取值*a,取类型大小运算符sizeof(int),逻辑非!a,逻辑按位取反~a,他们都是单目的运算符,且同时出现在表达式,运算顺序是右到左。
4、知道一个规律,总体的运算符的优先级是 单目 > 双目 > 三目 > 赋值(包含复合赋值),除去几个特殊的。
有了大前提,接下来是高潮!
用网友总结的一个顺口溜加上我的改进,并平时结合实践一定能事半功倍的牢记!"张飞算计魏延,关羽,或者调戏妇女",什么意思呢?
以下是优先级从高到底的顺序,而结合性根据常识就能判断:
张飞=逻辑非(飞)运算符 !(提醒前面提到的单目,除那四个之外,单目是最高级别的,都是右到左,拿sizeof()来记忆提醒是右到左
算计=算(算)术运算符 其次是+-*/%(小学数学就教的的顺序,先算*/%,再算加减,从左到右,小学就是这样的,没变)
魏延=移位(魏)运算符 然后是移位运算符《 》 ,说1000 0011谁移4位,那肯定是左到右顺序计算,10000011<4,相当于除法
关羽=关(关羽)系和位与(魏羽)运算符 接着是关系运算符,这里注意点:==和!=最后算,还有结合性左到右,其实根据常识也是如此。
然后是位与运算符&(~是单目)
或者=位或 其次位或|,当然如果写程序多,自然记得位异或^,不用想必夹在中间,学过组成原理就知道左到右的顺序
这才能轮的上逻辑与&&(羽),然后是逻辑或||(或者),结合性想到短路操作,就知道是左到右。
调戏=(调)条件运算符?:(三目) 最后,条件运算符,也就是级别低的三目运算符
妇女=赋值和复合赋值 最后是,赋值运算符=和复合的赋值运算符,比如-=,+=,*=,/=,%=,&=,*=,《=,》=,|=,^= ……,都是右到左的结合性
注意:
1、如果程序段中的运算符很多,最好是括号括起来,不要太自信。
2、c++的运算符,增加了几个,不过原c的,还是适用的。
3、逻辑运算符&&和||和!计算的是整个表达式的逻辑真值,而位运算符的&和^和~和|,计算的是二进制数的每一位
4、这个顺口溜要遵循大前提那4条,暨:
人为最高是括号包住的
自然最高是四个(),[],点,—>,左到右。
逗号最低
三级中,单目最高,且单目都是右到左。其次双目和三目。
c/c++系列的运算符优先级总结的更多相关文章
- (转)JavaScript中的运算符优先级
JavaScript中的运算符优先级是一套规则.该规则在计算表达式时控制运算符执行的顺序.具有较高优先级的运算符先于较低优先级的运算符执行.例如,乘法的执行先于加法. 下表按从最高到最低的优先级列出J ...
- C语言运算符优先级和口诀(转)
一共有十五个优先级: 1 () [] . -> 2 ! ~ -(负号) ++ -- &(取变量地址)* (type)(强制类型) sizeof 3 ...
- js 运算符优先级
在看jquery源码,仔细看入口函数的时候,有点懵了.看到与或.多重三目,傻傻的分不清,就代码仔细的区分下运算符优先级,以前都是呼呼的飘过.看来任何一个细节都不能忽略,不然效率极低.. !functi ...
- 一道c语言运算符优先级问题
一道c语言运算符优先级问题 #include <iostream> using namespace std; int main() { char test[] = {"This ...
- C语言运算符优先级和口诀 (转)
一共有十五个优先级: 1 () [] . -> 2 ! ~ -(负号) ++ -- &(取变量地址)* (type)(强制类型) sizeof 3 ...
- Java运算符优先级(转)
转自:http://www.cnblogs.com/gw811/archive/2012/10/13/2722752.html Java运算符优先级 序列号 符号 名称 结合性(与操作数) 目数 说明 ...
- java运算符优先级记忆口诀
尊重原创:(口诀)转自http://lasombra.iteye.com/blog/991662 今天看到<java编程思想>中的运算符优先级助记口诀,不过"Ulcer Addi ...
- js中的运算符优先级顺序
js中运算符优先级从高到底的顺序: 算术操作符 → 比较操作符 → 逻辑操作符 → "="赋值符号
- C/C++运算符优先级
运算符优先级从高至低 优先级 操作符 描述 例子 结合性 1 ()[]->.::++-- 调节优先级的括号操作符数组下标访问操作符通过指向对象的指针访问成员的操作符通过对象本身访问成员的操作符作 ...
随机推荐
- hdfs 复制路径下所有文件
hadoop fs -cp $SRC_FILE $TARGET_FILE hadoop fs -cp $SRC_DIR $TARGET_DIR 注:复制路径时,最后一个斜杠是没有的.添加斜杠后报文件找 ...
- 解决Unity5+Vuforia+Network本地联机发布到Android上白屏的问题
Unity5+Vuforia+Network本地联机,在Android下点击联机,然后识别模型就出现白屏,点击屏幕上相应位置的按钮(已白屏,但点击该看不见的按钮)还是能起作用,如跳转到其他场景正常. ...
- [转]html5表单上传控件Files API
表单上传控件:<input type="file" />(IE9及以下不支持下面这些功能,其它浏览器最新版本均已支持.) 1.允许上传文件数量 允许选择多个文件:< ...
- CSS基础篇之选择符3
border(边框) 如何用CSS调出边框 我们给p标签加一个边框试一下 p{ border:1px solid #ccc:/*这是缩写*/ } 第一个值是为边框的宽度 第二个值是为边框线样式为直线 ...
- SDOI 2016 数字配对
题目大意:给定n个数字以及每个数字的个数和权值,将满足条件的数字配对,使得总代价不小于0,且配对最多 最大费用最大流拆点,对于每个点,连一条由S到该点的边,容量为b,花费为0,再连一条到T的边 对于每 ...
- C++11 并发指南七(C++11 内存模型一:介绍)
第六章主要介绍了 C++11 中的原子类型及其相关的API,原子类型的大多数 API 都需要程序员提供一个 std::memory_order(可译为内存序,访存顺序) 的枚举类型值作为参数,比如:a ...
- Net作业调度(四)—quartz.net持久化和集群
介绍 在实际使用quartz.net中,持久化能保证实例重启后job不丢失. 集群能均衡服务器压力和解决单点问题. quartz.net在这两方面配置都比较简单. 持久化 quartz.net的持久化 ...
- MySQL 远程连接(federated存储引擎)
标签:federated存储引擎 概述 本文主要介绍通过federated存储引擎建立远程连接表 测试环境:mysql 5.6.21 步骤 开启federated存储引擎 先查看federated存储 ...
- MySQL实现嵌套集合模型
MySQL实现嵌套集合模型 译文主要是介绍如何用MySQL来存储嵌套集合数据.在其中会增加一些自己的理解,也会删除掉一些自认为无用的废话. 这篇文章主要讲的是嵌套集合模型,所以邻接表不是本文的重点,简 ...
- 久违的问候-----eclipse中搭建maven项目2016年
好久没有写过博客了,可是一直向别人推荐自己的博客,深感惭愧!今天再次在寒冷之夜继续code,config,write. 接下来,我们就来谈下eclipse中搭建maven web工程的步骤!虽然就是一 ...