知识大全 C++中运算符优先级的学习注解
Posted 知
篇首语:百川东到海,何时复西归?少壮不努力,老大徒伤悲。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 C++中运算符优先级的学习注解相关的知识,希望对你有一定的参考价值。
C++中运算符优先级的学习注解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
提起运算符的优先级 很多了解C++的过来人都会想 这有什么难的?不就是谁的优先级高就算谁么 确实如此 运算符的优先级不是一个大问题 但对于一个初学者来说 却经常容易在上面迷糊与犯错 而对于一个了解C++的人来说 我相信也会偶尔在上面摔倒 不信就继续往下读
优先级高的先运算 带来的困惑
C++中运算符的优先级有一张表 表里把运算符进行了分类 这张表是不需要死记硬背的 只要有个大致的轮廓就OK了 例如应该记住最低优先级是逗号运算符 其次是赋值运算符 再其次是三目运算符 而关系运算符的优先级高于逻辑运算符(不包括逻辑非运算) 算术运算符的优先级高于关系运算符 象++和﹣﹣的优先级比前面几个都高 但最高的要属()了 知道这些后 你的脑海里一定有一条准则了 优先级高的先运算 那么下面看一个例子
int x= y=
!x&&x+y&&++y
上面的语句中出现了! && + ++这四个运算符 那么问题来了 到底先算谁呢?
有一个姓蔡的同学站起来说 ++运算符在这里面优先级最高 理所应当最先算++ 既先计算++y 再算!x 再算x+y 最后把它们&&起来 按照蔡同学的思路 第二步的结果是 &&x+y&& 由于&&是严格运算 有一个为 结果既为 所以不需要计算x+y了 整个语句的结果是 假 按照上面蔡同学的说法 执行完后y的值应该是 了 这对不对呢?
一位姓高的同学站起来反驳道 我觉得应该先计算!x 如果值为假 则不需要计算下去 最后结果为假 如果值为真 再计算x+y 同理如果其值为真 再去计算++y 否则最后结果也为假
蔡同学不服起来说 高同学你觉得++和!谁的优先级高呢?高同学答道 那当然是++高 蔡同学接着问 那为什么还要先计算!呢?高同学答不出来了
是呀 为什么要先算!呢?
加括号确定优先级的方法
高同学说的是正确的 为什么呢?下面我给大家解释一下 当多个优先级不同的运算符在一起时 为了不混淆 可以先加上括号 这样就分出层次了 相同层次的考虑结合性问题 当确定下来先算那块时 再往这块里面深入 例如上面的例子 我们可以这样加上括号 从左向右看 由于!比&&优先级高 所以有(!x) 又由于&&比+优先级低 所以有(x+y) 而++优先级高于&& 所以(++y) 这样整个式子就变成了 (!x)&&(x+y)&&(++y) 最外层的是两个&&运算 由于&&的结合性是从左至右 所以上式可看成 A&&B&&C 先计算A 再计算B 最后算C 由于x= 则!x就为假 后面的就不需要再算了 整个语句的值为假 执行完后 y的值没变 还是
所以碰到不清楚先算谁后算谁时 先加个括号看看 就明白了先后次序 下面做一个加括号的练习 给语句c=a>b?a b 加括号 此语句有三个运算符 = > ? 应该怎样加括号呢?
第一种方案 c=((a>b)?a b)
第二种方案 c=(a>(b?a b))
第三种方案 (c=a)>(b?a b)
应该是那一种呢?按照运算符优先级的高低顺序 >优先级高于= 所以不可能把(c=a)括起来 而>优先级高于? 运算符 所以也不可能把(b?a b)括起来 因此 第一种答案正确
下面再看一个类似的例子
int i= j= k
k=i
相关参考
PHP关于访问控制的和运算符优先级介绍 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!这篇文章主要介
中缀表达式转为后缀表达式的规则基本上与上面题相同不同之处是对运算符**优先级的规定在算术运算中先乘除后加减先括号内后括号外相同级别的运算符按从左到右的规则运算而对**运算符其优先级同常规理解即高于
Java的逗号运算符 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在C和C++里逗号不仅作
初学者编程入门:学习C++的最大难度 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!困难度之一C++
数据结构学习讲座(C++)单链表(3) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!单链表()下面
数据结构学习讲座(C++)单链表(2) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!单链表()&n
数据结构学习讲座(C++)单链表(1) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!单链表()&n
数据结构学习讲座(C++)双向链表 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!双向链表 
知识大全 c++对于学电气的学生以后的发展有多大的帮助,在考过二级后到底应该不应该继续学习
c++对于学电气的学生以后的发展有多大的帮助,在考过二级后到底应该不应该继续学习?求大神指点。可能一点用都没有,也可能一直要用。电气设计目前大多数人使用现成的CAD软件,一些特殊的东西也需要自己编程计
知识大全 厦门那里有培训C语言,或者是C++的,我是新手,我想去学校学习程式设计,知道的说下地址和联络方式吧
厦门那里有培训C语言,或者是C++的,我是新手,我想去学校学习程式设计,知道的说下地址和联络方式吧! 以下文字资料是由(全榜网网www.cha138.com)小编为大家