打印

为什么位与运算符"&"的优先级比"+"低?

[复制链接]
2233|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wlsui|  楼主 | 2008-6-20 18:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上午写程序的时候才留意这个问题:
cStr[0] = (ucErrCode >> 4) & 0x0f + 0x30;
cStr[1] = ucErrCode & 0x0f + 0x30;
结果发现cStr里的值仍然是ucErrCode的高4位和低4位的阿拉伯数字(十六进制的ucErrCode中高4位和低4位只有数字,没有A~F), 而不是预想的字符型数字. 后来才发现是由于 & 的优先级比 + 低.

为什么位与"&"的优先级比"+"低呢? 按照习惯应该是比"+"高啊.当然这只是我的思维习惯(现在看来是坏的习惯). 不过我还是想问下, C标准制定者在定义"&" 和 "+" 的优先级顺序时是基于什么考虑呢?

相关帖子

沙发
平常人| | 2008-6-20 20:52 | 只看该作者

算术运算优于逻辑运算

有算术运算符参与的运算为整个算法做贡献,这种时候逻辑运算符只能当陪衬了,逻辑运算符优先级低于算术运算符就不奇怪了。

使用特权

评论回复
板凳
ayb_ice| | 2008-6-21 09:14 | 只看该作者

因为人家就是这么定的

使用特权

评论回复
地板
dai_weis| | 2008-6-21 09:37 | 只看该作者

没有为什么,规定就是这么样

多用几个括号了,好处很多
除了考试很少有人把很长的一段写在一起还不用括号

使用特权

评论回复
5
农民讲习所| | 2008-6-21 09:46 | 只看该作者

多几个括号不会累死人

俺也记不住这些优先到底谁高谁低,要看书,但俺从来就没出现过这些问题,就是习惯乱加括号。

使用特权

评论回复
6
yewuyi| | 2008-6-21 10:21 | 只看该作者

哈哈,我还因为自己水平臭,所以记不得优先级呢……

原来还有这么难友……



加括号的好处就是便于阅读,一目了然……



突然想起刚出道应聘时的一次经历,一个主考官给俺弄了一个长长的式,考俺优先级顺序,并让俺用括号分割开来,NND,最后俺狼狈而逃……

使用特权

评论回复
7
gyt| | 2008-6-22 10:53 | 只看该作者

一定要用括号

不然可读性太差

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

263

帖子

1

粉丝