C语言中+的优先级大于>>

来源:互联网 发布:杰奇cms破解版 编辑:程序博客网 时间:2024/05/19 23:10

NOTE:

算数运算符的优先级刚好比移位运算符高一个优先级。

== 和 != 的优先级比位操作符 & ^ | 高一个优先级。

.  [ ] () 的优先级高于 * .

... ...

-----The C programming language 2ed, p48.

C语言的优先级真让人抓狂


在计算Y、U、V分量的buffer中当前像素点的偏移位置,uiScaleX和uiScaleY是计算色度分量的偏移时的收缩比例。

curOffset = ((yStartInPic+y)>>uiScaleY) * stride + (xStartInPic+x)>>uiScaleX;

按照上面的优先级,该语句等价为:

curOffset =( ((yStartInPic+y)>>uiScaleY) * stride + (xStartInPic+x) )>>uiScaleX;


正确的应该是:

curOffset = ((yStartInPic+y)>>uiScaleY) * stride + ((xStartInPic+x)>>uiScaleX);


指针p所指对象的成员a:

p->a, 或者 (*p).a


i = 1,2,3,4,5;

实际上由于 = 的优先级比逗号运算符的要高,上面的语句等价为:

(i=1),2,3,4,5;

总结:

表达式若涉及加减乘数之外的操作符,最好加上括号!!!



0 0