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条,暨:
人为最高是括号包住的
自然最高是四个(),[],点,—>,左到右。
逗号最低
三级中,单目最高,且单目都是右到左。其次双目和三目。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/382148.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode(合集) 路径总和(二叉树) golang copy的值复制

112. 路径总和 给定一个二叉树和一个目标和&#xff0c;判断该树中是否存在根节点到叶子节点的路径&#xff0c;这条路径上所有节点值相加等于目标和。 说明: 叶子节点是指没有子节点的节点。 示例: 给定如下二叉树&#xff0c;以及目标和 sum 22&#xff0c; 5/ \4 8/ …

c++指针总结(易混淆)

一&#xff1a;指针的概念指针是一个特殊的变量&#xff0c;里面存储的数值是内存里的一个地址。学好指针&#xff0c;重要的是搞清楚指针的四个方面的内容&#xff1a;指针的类型、指针所指向的类型、指针所指向的内存区、指针本身占据的内存区。1、 如何判断指针的类型呢&…

114. 二叉树展开为链表 golang

114. 二叉树展开为链表 给定一个二叉树&#xff0c;原地将它展开为链表。 例如&#xff0c;给定二叉树 1/ \2 5/ \ \ 3 4 6将其展开为&#xff1a; 1\2\3\4\5\6Code /*** Definition for a binary tree node.* type TreeNode struct {* Val int* Left *Tre…

十戒

用音乐代替游戏&#xff0c;用读书代替上网&#xff0c;用欣赏电影代替电视剧&#xff0c;用思考代替发呆&#xff0c;用行动代替牢骚&#xff0c;用远足代替安逸享受&#xff0c;用写作代替恋爱&#xff0c;用晨读代替晚起&#xff0c;用高质量睡眠代替熬夜&#xff0c;用活跃…

112. 路径总和 golang

112. 路径总和 给定一个二叉树和一个目标和&#xff0c;判断该树中是否存在根节点到叶子节点的路径&#xff0c;这条路径上所有节点值相加等于目标和。 说明: 叶子节点是指没有子节点的节点。 示例: 给定如下二叉树&#xff0c;以及目标和 sum 22&#xff0c; 5/ \4 8/ …

迷途

? 好不容易熬到了周末&#xff0c;却又不知道该做些什么&#xff0c;一转眼&#xff0c;发现什么都没有做又过去了&#xff0c;其实人又总是不这样&#xff0c;总是渴望得到&#xff0c;得到了却没了下一步的计划&#xff0c;这种感觉跟你爬到山顶却索然无味的感觉一样&am…

113. 路径总和 II golang

113. 路径总和 II 给定一个二叉树和一个目标和&#xff0c;找到所有从根节点到叶子节点路径总和等于给定目标和的路径。 说明: 叶子节点是指没有子节点的节点。 示例: 给定如下二叉树&#xff0c;以及目标和 sum 22&#xff0c; 5/ \4 8/ / \11 13 4/ \ / \7 …

二项式系数的递归算法

??写递归函数时&#xff0c;偶然想起来二项式系数的递归写法。废话不说&#xff0c;上代码。code:#include #include using namespace std;int er(int n,int k){if(k0||kn)return 1;elsereturn (er(n-1,k-1)er(n-1,k))%2;}int main(){int a,b;while (cin>>a>>b)c…

222. 完全二叉树的节点个数 golang

222. 完全二叉树的节点个数 给出一个完全二叉树&#xff0c;求出该树的节点个数。 说明&#xff1a; 完全二叉树的定义如下&#xff1a;在完全二叉树中&#xff0c;除了最底层节点可能没填满外&#xff0c;其余每层节点数都达到最大值&#xff0c;并且最下面一层的节点都集中…

刚刚有水了一道,用递归实现进制转换

code :#include <iostream>using namespace std;int a[101],i0;void jinzhi (int n){if (n1)a[i]1;else {a[i]n%2;jinzhi(n/2);}}int main (){int k,j;cin>>k;jinzhi(k);for (int ji-1;j>0;j--)cout<<a[j];}其实原理都是一样&#xff0c;无非是换成方法而…

958. 二叉树的完全性检验 golang

958. 二叉树的完全性检验 给定一个二叉树&#xff0c;确定它是否是一个完全二叉树。 百度百科中对完全二叉树的定义如下&#xff1a; 若设二叉树的深度为 h&#xff0c;除第 h 层外&#xff0c;其它各层 (1&#xff5e;h-1) 的结点数都达到最大个数&#xff0c;第 h 层所有的…

dp问题:采药

今天把采药A了&#xff0c;属于dp问题&#xff0c;主要思路是把所有时间都存进一个数组中&#xff0c;数组的值对应药的价值&#xff0c;下标是时间&#xff0c;然后记忆化搜索&#xff0c;碰到价值高的就赋值&#xff0c;相比于摘花生&#xff0c;辰辰是一个聪明的猴子&#x…

662. 二叉树最大宽度 golang

662. 二叉树最大宽度 给定一个二叉树&#xff0c;编写一个函数来获取这个树的最大宽度。树的宽度是所有层中的最大宽度。这个二叉树与满二叉树&#xff08;full binary tree&#xff09;结构相同&#xff0c;但一些节点为空。 每一层的宽度被定义为两个端点&#xff08;该层最…

传值的一点认识

今天又把C课本翻了一遍&#xff0c;发现了好多以前没彻底弄清楚的问题&#xff0c;比如说传值。说起传值&#xff0c;最先想到的恐怕是赋值&#xff0c;他是最基本的传值方式&#xff0c;不过有时候我们希望用另外的方式来传值。传值一共有三种方式&#xff0c;第一种是赋值&am…

递归经典例子

程序调用自身的编程技巧称为递归&#xff08; recursion&#xff09;。 一个过程或函数在其定义或说明中又直接或间接调用自身的一种方法&#xff0c;它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解&#xff0c;递归策略只需少量的程序就可描述出…

golang中的栈(LeetCode刷题)

栈的模拟&#xff08;LeetCode刷题用法&#xff09; func main() {stack : make([]string, 0)stack append(stack, "1" )stack append(stack, "2" )stack append(stack, "3" )fmt.Println(stack)stack stack[:len(stack)-1]fmt.Println(sta…

739. 每日温度 golang (list实现)

739. 每日温度 根据每日 气温 列表&#xff0c;请重新生成一个列表&#xff0c;对应位置的输出是需要再等待多久温度才会升高超过该日的天数。如果之后都不会升高&#xff0c;请在该位置用 0 来代替。 例如&#xff0c;给定一个列表 temperatures [73, 74, 75, 71, 69, 72, …

openjudge基础题3计算书费

总时间限制: 1000ms内存限制: 65536kB描述下面是一个图书的单价表&#xff1a;计算概论 28.9 元/本数据结构与算法 32.7 元/本数字逻辑 45.6元/本C程序设计教程 78 元/本人工智能 35 元/本计算机体系结构 86.2 元/本编译原理 27.8元/本操作系统 43 元/本计算机网络 56 元/本JAV…

739. 每日温度 golang

739. 每日温度 根据每日 气温 列表&#xff0c;请重新生成一个列表&#xff0c;对应位置的输出是需要再等待多久温度才会升高超过该日的天数。如果之后都不会升高&#xff0c;请在该位置用 0 来代替。 例如&#xff0c;给定一个列表 temperatures [73, 74, 75, 71, 69, 72, …

查找和排序的一点浅显认识

以前老是混淆各种排序的方法&#xff0c;对此我也感到十分苦恼&#xff0c;去网上搜索各种排序教程&#xff0c;结果收获颇微&#xff0c;就在期末考试时&#xff0c;我还担心会有排序的题&#xff08;事实证明我多虑了&#xff09;&#xff0c;不过作为算法的基本功&#xff0…