优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。 
  所有的优先级中,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。其它的都是从左至右结合。 
  具有最高优先级的其实并不算是真正的运算符,它们算是一类特殊的操作()是与函数相关,[]与数组相关,而->.是取结构成员。 
  其次是单目运算符,所有的单目运算符具有相同的优先级,因此在我认为的 真正的运算符中它们具有最高的优先级,又由于它们都是从右至左结合的,因此*p++*(p++)等效是毫无疑问的。 
  接下来是算术运算符*/%的优先级当然比+、-高了。 
  移位运算符紧随其后。 
  其次的关系运算符中,< <= > >=要比 == !=高一个级别,不大好理解。 
  所有的逻辑操作符都具有不同的优先级(单目运算符出外,!和~ 
  逻辑位操作符的""""高,而"异或"则在它们之间。 
  跟在其后的运算符优先级图片&&||高。 
  接下来的是条件运算符赋值运算符逗号运算符 
  在C语言中,只有4个运算符规定了运算方向,它们是&&| |、条件运算符及赋值运算符。 
  &&| |都是先计算左边表达式的值,当左边表达式的值能确定整个表达式的值时,就不再计算右边表达式的值。如 a = 0 && b; &&运算符的左边位0,则右边表达式b就不再判断。 
  在条件运算符中。如a?b:c;先判断a的值,再根据a的值对bc之中的一个进行求值。 
  赋值表达式则规定先对右边的表达式求值,因此使 a = b = c = 6;成为可能。
————算,关——逻,条————

断句如上。怎么记忆呢?
我是这样记忆的:“”内表示运算符的简称。
独你账,(因为你和关羽有仇)
羽带着兵巡(因为你躲了起来)
你跑到别处了,隐姓埋名,豆腐卖。(当了卖豆腐的):豆腐——实际上是”“
2009-4-8 15:43
回复
我是这样记得一个自称黑的初学者连编程都不会还算什么黑客,把自己关起来反思吧,逻辑都没有条理,因为你不认真学!还理由说因为天赋不够,真逗``
[ 2008-1-30 19:22:00 | Author: 盛方单片机 ]
 
C语言运算符优先级顺口溜[]
醋坛酸味灌
味落跳福豆

44个运算符

醋-初等,4个: ( ) [ ] -> 指向结构体成员 . 结构体成员
坛-单目,9个: ! ~ ++ -- -负号 (类型)  *指针 &取地址 sizeof长度 (结合方向:自右向左)
酸-算术,5个: * / % + -
味-位移,2个: << >>
灌-关系,6个: < <= > >= == 等于 != 不等于
味-位逻,3个: & 按位与 ^ 按位异或 | 按位或
落-逻辑,2个: && 逻辑与 || 逻辑或
跳-条件,1个,三目: ? :                                                              (结合方向:自右向左)
福-赋值,11个: = += -= *= /= %= >>= <<= &= ^= |=                      (结合方向:自右向左)
豆-逗号,1个: ,
结合方向自右向左的只有三类:赋值、单目和三目,其它的都是从左至右结合。

注意:自己今天写程序时候把关系运算符号和位逻辑的优先级弄反。尽量用括号,就不出问题。
如:ifP1OUT&BIT0==0P1OUT ^=BIT0;        //判断p1.0是否输出为0,是就翻转,即点
LED.
这行程序是错误的。可两边加上括号,即if((P1OUT&BIT0==0),或是直接用:P1OUT|=BIT0
具有最高优先级的其实并不算是真正的运算符,它们算是一类特殊的操作。()是与函数相关,[]与数组相关,而->.是取结构成员。
其次是单目运算符,所有的单目运算符具有相同的优先级,因此在我认为的 真正的运算符中它们具有最高的优先级,又由于它们都是从右至左结合的,因此*p++*(p++)等效是毫无疑问的。
接下来是算术运算符,*/%的优先级当然比+、-高了。
移位运算符紧随其后。
其次的关系运算符中,< <= > >=要比 == !=高一个级别,不大好理解。
所有的逻辑操作符都具有不同的优先级(单目运算符出外,!和~
逻辑位操作符的""""高,而"异或"则在它们之间。
跟在其后的&&||高。
接下来的是条件运算符,赋值运算符及逗号运算符。


C语言中,只有4个运算符规定了运算方向,它们是&&| |、条件运算符及赋值运算符。
&&| |都是先计算左边表达式的值,当左边表达式的值能确定整个表达式的值时,就不再计算右边表达式的值。如 a = 0 && b; &&运算符的左边位0,则右边表达式b就不再判断。
在条件运算符中。如a?b:c;先判断a的值,再根据a的值对bc之中的一个进行求值。
赋值表达式则规定先对右边的表达式求值,因此使 a = b = c = 6;成为可能。
经高人指点,记住了一句话,用于记住常用运算符的优先级,终身受用:
"(逻辑) (术运算符) (系运算符) (逻辑) (逻辑) (件运算符) (值运算符)",
括号内的不必读出,直接念"非算关与或条赋",但要知道每个字是什么意思.
记忆方法是这样的:"张飞算计关羽,或者tiaoxi妇女".
方法不是很优雅,但是很奏效,如果有更好的记忆法,可以提出来,以防本人让历史重演
C中运算符记忆规律(2009-10-23 17:28:33)
标签:杂谈 
分类:学习
C++ 操作符的优先级
操作符及其结合性
功能
用法
L
L
L
::
::
::
全局作用域
类作用域
名字空间作用域
::name
class::name
namespace::name
L
L
L
L
L
.
->
[]
()
()
成员选择
成员选择
下标
函数调用
类型构造
ber
pointer->member
variable[expr]
name(expr_list)
type(expr_list)
R
R
R
R
R
++
--
typeid
typeid
显示强制类型转换
后自增操作
后自减操作
类型ID
运行时类型ID
类型转换
lvalue++
lvalue--
typeid(type)
typeid(expr)
cast_name<type>(expr)
R
R
R
R
R
R
R
R
R
R
R
R
R
R
sizeof
sizeof
++
--
~
!
-
+
*
&
()
new
delete
delete[]
对象的大小
类型的大小
前自增操作
前自减操作
位求反
逻辑非
一元负号
一元正号
解引用
取地址
类型转换
创建对象
释放对象
释放数组
sizeof expr
sizeof(type)
++lvalue
--lvalue
~expr
!expr
-expr
+expr
*expr
&expr
(type)expr
new type
delete expr
delete []expr
L
L
->*
.*
指向成员操作的指针
指向成员操作的指针
ptr->*ptr_to_member
obj.*ptr_to_member
L
L
L
*
/
%
乘法
除法
求模(求余)
expr * expr
expr / expr
expr % expr
L
L
+
-
加法
减法
expr + expr
expr - expr
L
L
<<
>>
位左移
位右移
expr << expr
expr >> expr
L
L
L
L
<
<=
>
>=
小于
小于或等于
大于
大于或等于
expr < expr
expr <= expr
expr > expr
expr >= expr
L
R
==
!=
相等
不等
Expr == expr
Expr != expr
R
&
位与
Expr & expr
R
^
位异或
Expr ^ expr
R
|
位或
Expr | expr
R
&&
逻辑与
Expr && expr
R
||
逻辑或
Expr || expr
R
?:
条件操作
Expr ? expr : expr
R
R
R
R
R
=
*=,/=,%=
+=,-=
<<=,>>=
&=,|=,^=
赋值操作
符合赋值操作
Lvalue= expr
Lvalue+= expr
……
R
throw
抛出异常
Throw expr
L
,
逗号
Expr, expr
记忆方法:
--摘自《C语言程序设计实用问答》    -吕凤翥        涛著   
    问题:如何记住运算符的15种优先级和结合性?   
    解答:C语言中运算符种类比较繁多,优先级有15种,结合性有两种。   
    如何记忆两种结合性和15种优先级?下面讲述一种记忆方法。   
    结合性有两种,一种是自左至右,另一种是自右至左,大部分运算符的结合性是自左至右,只有单目运算符、三目运算符的赋值运算符的结合性自右至左。   
    优先级有15种。记忆方法如下:   
    记住一个最高的:构造类型的元素或成员以及小括号。   
    记住一个最低的:逗号运算符。   
    剩余的是一、二、三、赋值。   
    意思是单目、双目、三目和赋值运算符。   
    在诸多运算符中,又分为:   
    算术、关系、逻辑。   
    两种位操作运算符中,移位运算符在算术运算符后边,逻辑位运算符在逻辑运算符的前
面。再细分如下:   
    算术运算符分    */%高于+-   
    关系运算符中,》,》=,《,〈=高于==,!=   
    逻辑运算符中,除了逻辑求反(!)是单目外,逻辑与(&&)高于逻辑或(||)。   
    逻辑位运算符中,除了逻辑按位求反(~)外,按位与(&)高于按位半加(^),高于按位或(|)。   
    这样就将15种优先级都记住了,再将记忆方法总结如下:   
    去掉一个最高的,去掉一个最低的,剩下的是一、二、三、赋值。双目运算符中,顺序为算术、关系和逻辑,移位和逻辑位插入其中
 
 
初单算,关逻,条赋逗(我认为最好的断句)
这样记:
      《一道简单算术题》 
次做了一道单的算术题。 
由于我没看懂题目内在的关系逻辑 
(注意:字母顺序G→L 
以致乱用条件,变量乱赋值
从而导致了运算的错误。 
这么简单的题目啊,我闹了笑话。
(也即得大家一直笑。)                 
 
-----------------------------------------------------------------------------------
 
C语言运算符优先级顺口溜[]
醋坛酸味灌
味落跳福豆

44个运算符

醋-初等,4个: ( ) [ ] -> 指向结构体成员 . 结构体成员
坛-单目,9个: ! ~ ++ -- -负号 (类型)  *指针 &取地址 sizeof长度 (结合方向:自右向左)
酸-算术,5个: * / % + -
味-位移,2个: << >>
灌-关系,6个: < <= > >= == 等于 != 不等于
味-位逻,3个: & 按位与 ^ 按位异或 | 按位或
落-逻辑,2个: && 逻辑与 || 逻辑或
跳-条件,1个,三目: ? :                                                              (结合方向:自右向左)
福-赋值,11个: = += -= *= /= %= >>= <<= &= ^= |=                      (结合方向:自右向左)
豆-逗号,1个: ,
结合方向自右向左的只有三类:赋值、单目和三目,其它的都是从左至右结合。
 
 ---------------------------------------------------------------------------
一个简单的口诀,可以让你在很段的时间里记忆C语言运算符优先级别,过目不忘……
括号成员第一;        //括号运算符[]() 成员运算符.  ->
全体单目第二;        //所有的单目运算符比如++ -- +() -() 指针运算*&
乘除余三,加减四;    //这个""是指取余运算即%
移位五,关系六;    //移位运算符:<< >> ,关系:> < >= <=
等于()不等排第七;    //== !=
位与异或和位或;    //这几个都是位运算: 位与(&)异或(^)位或(|)     
"三分天下"八九十
逻辑或跟与            //逻辑运算符:|| &&
十二和十一;        //注意顺序:优先级(||)  底于优先级(&&)
条件高于赋值,    //三目运算符优先级排到 13 位只比赋值运算符和","//需要注意的是赋值运算符很多!
逗号运算级最低!    //逗号运算符优先级最低

      由于C语言的运算符优先级与C++的不完全一样(主要是增加了几个运算符),所以这个口诀不能完全实用于
C++.但是应该能够兼容,大家可以比较一下他们的区别应该就能够很快掌握C++的优先级的!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。