我想修改C运算符优先级

[复制链接]
3409|8
 楼主| gbchang 发表于 2011-7-1 17:27 | 显示全部楼层 |阅读模式
本帖最后由 gbchang 于 2011-7-1 17:31 编辑

你犯过如下错误吗?
if( 0x80 == flag & 0x80 )
intC = bytA << 8 + bytB

我希望下次修订C标准时,把位操作的优先级提高,至少也要比逻辑操作的都要高吧
就是 << >> & | ^ 都提到 == > < != 前面
或者再狠一点,到算术运算符前面,大家看怎样?
这样对硬件工程师好像就方便许多 ^-^,不知对软件程序员影响如何

但这只是我的想法,米国人不见得比我笨,那为什么是现在这种优先级呢?

附C优先级顺序
()        []        ->        .        ::        ++        --
!        ~        ++        --        -        +        *        &        (type)        sizeof
->*        .*
*        /        %
+        -
<<        >>
<        <=        >        >=
==        !=
&
^
|
&&
||
? :
=        +=        -=        *=        /=        %=        &=        ^=        |=        <<=        >>=
,
邪恶猛男 发表于 2011-7-1 17:46 | 显示全部楼层
if( 0x80 == flag & 0x80 )
intC = bytA << 8 + bytB

如果是我写我就这样写if( 0x80 == (flag & 0x80 ))
intC = (bytA << 8) + bytB

我是不会因为优先级这样对我这样**力不是很好的产生错觉
huangqi412 发表于 2011-7-1 18:10 | 显示全部楼层
有空去折腾优先级的都应该打PP,   括号不好么。。。
johnwjl 发表于 2011-7-1 19:16 | 显示全部楼层
LZ这种钻牛角尖的精神不可取。
hgjinwei 发表于 2011-7-1 22:22 | 显示全部楼层
只知道括号优先级最高,你们慢聊,我打酱油去了。
蜗牛狂奔 发表于 2011-7-4 13:07 | 显示全部楼层
精神可嘉,有创新精神!赞一个!
老鱼探戈 发表于 2011-7-4 13:42 | 显示全部楼层
打点醋,回家吃糖醋鱼~~
lxyppc 发表于 2011-7-4 14:00 | 显示全部楼层
我希望下个标准出来后只有括号是最高优先级,其它的都是随机优先级
fushaobing 发表于 2011-7-5 17:35 | 显示全部楼层
《C专家编程》2.3.2 "有些运算符的优先级是错误的"
当C语言最初文献的作者告诉你“有些运算符的优先级是错误的”的时候,就像Kernighan和Ritchie在The C Programming Language第3页中所说的那样,你肯定会觉得确实存在问题。尽管如此,ANSI C在修改运算符优先级方面并没有采取什么动作,这也毫不奇怪,因为如果对运算符的优先级作了修改,那么大量现有的代码就会出现问题。

评分

参与人数 1威望 +4 收起 理由
gbchang + 4 这才是中肯的正能量

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

94

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部