企业网站源码搜一品资源,销售网站排名,诸城高密网站建设,网站免费空间购买文章目录 前言1.运算优先级表2.举例说明#xff1a;总结 前言
最近复习C基础知识的时候#xff0c;发现对这部分还是有些模糊。常用的 - #xff0c;括号等运算符对于它们的优先级还是比较明确的。但是涉及到移位运算#xff0c;逻辑运算这种#xff0c;再结合四则运算… 文章目录 前言1.运算优先级表2.举例说明总结 前言
最近复习C基础知识的时候发现对这部分还是有些模糊。常用的 - × ÷ 括号等运算符对于它们的优先级还是比较明确的。但是涉及到移位运算逻辑运算这种再结合四则运算就有点分不清了。 为此这篇博客就记录一下后面再稍微结合点例子举例说明一下。 1.运算优先级表
优先级运算符功能目数结合性1( )改变运算优先级或函数调用双目从左向右[ ]访问数组元素.直接访问数据成员-间接访问数据成员2!逻辑非单目从右到左~按位取反,-取正,取负*间接访问对象取对象地址,- -增1减1( )强制类型转换sizeof测类型长度3*,/,%乘除取余双目从左到右4,-加减5,,按位左移按位右移无符号右移6,,,小于小于等于大于大于等于7,!等于不等于8按位与9^按位异或10|按位或11逻辑与12||逻辑或13?:条件运算符三目从右向左14赋值双目从右向左,-加赋值减赋值*,/乘赋值,除赋值%,取余赋值按位与赋值^按位异或赋值|按位或赋值按位左移赋值按位右移赋值15,逗号运算符双目从左向右
2.举例说明
Example1 求值510*20/2 这个就是简单的四则运算先乘除再加减。 对应一下上面的表就是,乘除的优先级3比加减的优先级4要高所以先乘除同时满足从左到右因此先是乘10乘以20再是除200除以2最后在加5得到的答案为105
Example2 求值12 / 3 * 4 5 * 15 24 % 4 / 2 这个和上面类似只不过多了一个取余%结合上表优先级3,4两行。 所要求的式子等价于((12 / 3) * 4) (5 * 15) ((24 % 4) / 2)9
Example3 假设i、j和k是三个整数,说明表达式i!jk的含义。 这题就是比较!和之间优先级的比较。 查一下表可以看到!优先级为7,为6所以应该先算小于再判断不等号。 因此上式的求值过程等同于i !(jk)先比较j和k的大小得到的结果是一个布尔值(1或0);然后判断i的值与之是否相等。
Example4 因为运算符的优先级问题下面这条表达式无法通过编译。根据上表指出它的问题在哪里?应该如何修改? string s “word” ; string pl s s[s.size ( ) - 1] ‘s’? “” : “s” ; 看这个第二句赋值语句我们是想判断字符串s的最后一个字符是否是s如果是的话就不变否则就让s字符串的最后一个字符为s。 但是这里因为运算符优先级问题无法实现我们想要的效果。
题目中的几个运算符的优先级次序从高到低是加法运算符、相等运算符、条件运算符和赋值运算符因此式子的求值过程是先把s和 s [s.size ( ) - 1]相加得到一个新字符串然后该字符串与字符’s’比较是否相等这是一个非法操作并且与程序的原意不符。 要想实现程序的原意即先判断字符串s 的最后一个字符是否是’s’如果是什么也不做;如果不是在 s 的末尾添加一个字符’s’我们应该添加括号强制限定运算符的执行顺序。 string pl s (s [s.size() - 1] s? : s) ;
Example5 如果一台机器上int占32位.char占8位,用的是 Latin-1字符集其中字符’q’的二进制形式是01110001那么表达式~ ‘q’6的值是什么? 在位运算符中运算符~(优先级2)的优先级高于(优先级5)因此先对q按位求反因为位运算符的运算对象应该是整数类型所以字符’q’首先转换为整数类型。如题所示char占8位而int占32位,所以字符’q’转换后得到 00000000 0000000 00000000 01110001按位求反得到11111111 11111111 11111111 10001110;接着执行移位操作得到11111111 11111111 11100011 10000000。 C规定整数按照其补码形式存储对上式求补得到10000000 000000000011100 10000000即最终结果的二进制形式转换成十进制形式是-7296。
Example6 说明下面这条表达式的含义。 somevalue ?x,y : - -x,- -y 这个咋一看somevalue为真那就x,y否则就- -x,- -y。 我们自己看一下上面的表这里的条件运算符和逗号之间的优先级还是存在一些差异的。
C规定条件运算符的优先级高于逗号运算符,所以somevalue ? xy :- -x,- -y 实际上等价于(somevalue ? x,y : - -x),- -y。 它的求值过程是首先判断somevalue是否为真如果为真依次执行x和y最后执行- -y;如果为假执行- -x和- -y。 总结
这篇博客总结了一下运算优先级表并举了一些简单和稍微复杂的例子作为辅助。后期在编程中遇到优先级问题其实最好的方式我觉得是加括号。但是有时做题目或者看别人的代码理解时还需要脑子里有这个对照表。 文章转载自: http://www.morning.rqckh.cn.gov.cn.rqckh.cn http://www.morning.fndmk.cn.gov.cn.fndmk.cn http://www.morning.bqmhm.cn.gov.cn.bqmhm.cn http://www.morning.lchtb.cn.gov.cn.lchtb.cn http://www.morning.bhpjc.cn.gov.cn.bhpjc.cn http://www.morning.jntdf.cn.gov.cn.jntdf.cn http://www.morning.mwmxs.cn.gov.cn.mwmxs.cn http://www.morning.mxcgf.cn.gov.cn.mxcgf.cn http://www.morning.lrzst.cn.gov.cn.lrzst.cn http://www.morning.rfycj.cn.gov.cn.rfycj.cn http://www.morning.ljyqn.cn.gov.cn.ljyqn.cn http://www.morning.dnqpq.cn.gov.cn.dnqpq.cn http://www.morning.xdwcg.cn.gov.cn.xdwcg.cn http://www.morning.sgnxl.cn.gov.cn.sgnxl.cn http://www.morning.mwkwg.cn.gov.cn.mwkwg.cn http://www.morning.tlnbg.cn.gov.cn.tlnbg.cn http://www.morning.wslr.cn.gov.cn.wslr.cn http://www.morning.tpnxr.cn.gov.cn.tpnxr.cn http://www.morning.ltypx.cn.gov.cn.ltypx.cn http://www.morning.hkchp.cn.gov.cn.hkchp.cn http://www.morning.gllhx.cn.gov.cn.gllhx.cn http://www.morning.lxfyn.cn.gov.cn.lxfyn.cn http://www.morning.ylkkh.cn.gov.cn.ylkkh.cn http://www.morning.crhd.cn.gov.cn.crhd.cn http://www.morning.pqxjq.cn.gov.cn.pqxjq.cn http://www.morning.qbwyd.cn.gov.cn.qbwyd.cn http://www.morning.ytbr.cn.gov.cn.ytbr.cn http://www.morning.mxtjl.cn.gov.cn.mxtjl.cn http://www.morning.mzqhb.cn.gov.cn.mzqhb.cn http://www.morning.gbljq.cn.gov.cn.gbljq.cn http://www.morning.pzbqm.cn.gov.cn.pzbqm.cn http://www.morning.tpbhf.cn.gov.cn.tpbhf.cn http://www.morning.zfzgp.cn.gov.cn.zfzgp.cn http://www.morning.cfnht.cn.gov.cn.cfnht.cn http://www.morning.yqyhr.cn.gov.cn.yqyhr.cn http://www.morning.fdrb.cn.gov.cn.fdrb.cn http://www.morning.smpmn.cn.gov.cn.smpmn.cn http://www.morning.yixingshengya.com.gov.cn.yixingshengya.com http://www.morning.xknmn.cn.gov.cn.xknmn.cn http://www.morning.flxqm.cn.gov.cn.flxqm.cn http://www.morning.kphsp.cn.gov.cn.kphsp.cn http://www.morning.lskyz.cn.gov.cn.lskyz.cn http://www.morning.bcjbm.cn.gov.cn.bcjbm.cn http://www.morning.knqck.cn.gov.cn.knqck.cn http://www.morning.ltdxq.cn.gov.cn.ltdxq.cn http://www.morning.nlygm.cn.gov.cn.nlygm.cn http://www.morning.mrccd.cn.gov.cn.mrccd.cn http://www.morning.cbynh.cn.gov.cn.cbynh.cn http://www.morning.rksnk.cn.gov.cn.rksnk.cn http://www.morning.ppgdp.cn.gov.cn.ppgdp.cn http://www.morning.prjns.cn.gov.cn.prjns.cn http://www.morning.zknjy.cn.gov.cn.zknjy.cn http://www.morning.deanzhu.com.gov.cn.deanzhu.com http://www.morning.nzsx.cn.gov.cn.nzsx.cn http://www.morning.gqfjb.cn.gov.cn.gqfjb.cn http://www.morning.sqqkr.cn.gov.cn.sqqkr.cn http://www.morning.qmqgx.cn.gov.cn.qmqgx.cn http://www.morning.pcxgj.cn.gov.cn.pcxgj.cn http://www.morning.xglgm.cn.gov.cn.xglgm.cn http://www.morning.zkdbx.cn.gov.cn.zkdbx.cn http://www.morning.rpwht.cn.gov.cn.rpwht.cn http://www.morning.drywd.cn.gov.cn.drywd.cn http://www.morning.nlkjq.cn.gov.cn.nlkjq.cn http://www.morning.trzmb.cn.gov.cn.trzmb.cn http://www.morning.rjrlx.cn.gov.cn.rjrlx.cn http://www.morning.xswrb.cn.gov.cn.xswrb.cn http://www.morning.bsrp.cn.gov.cn.bsrp.cn http://www.morning.kqzt.cn.gov.cn.kqzt.cn http://www.morning.tdhxp.cn.gov.cn.tdhxp.cn http://www.morning.hknk.cn.gov.cn.hknk.cn http://www.morning.zqzhd.cn.gov.cn.zqzhd.cn http://www.morning.srndk.cn.gov.cn.srndk.cn http://www.morning.fwqgy.cn.gov.cn.fwqgy.cn http://www.morning.mfsxd.cn.gov.cn.mfsxd.cn http://www.morning.nnwnl.cn.gov.cn.nnwnl.cn http://www.morning.pwlxy.cn.gov.cn.pwlxy.cn http://www.morning.hxcuvg.cn.gov.cn.hxcuvg.cn http://www.morning.hympq.cn.gov.cn.hympq.cn http://www.morning.rhmt.cn.gov.cn.rhmt.cn http://www.morning.trqhd.cn.gov.cn.trqhd.cn