C语言运算符优先级列表(超级详细的---转载加自己习题)

转载于:http://www.jb51.net/article/37282.htm

每当想找哪个运算符优先级高时,很多时候总是想找的就没有,真让人气愤!现在,终于有个我个人觉得非常全的,分享给大家,欢迎拍砖!

C语言运算符优先级


优先级


运算符


名称或含义


使用形式


结合方向


说明


1


[]


数组下标


数组名[常量表达式]


左到右


--


()


圆括号


(表达式)/函数名(形参表)


--


.


成员选择(对象)


对象.成员名


--


->


成员选择(指针)


对象指针->成员名


--


2


-


负号运算符


-表达式


右到左


单目运算符


~


按位取反运算符


~表达式


++


自增运算符


++变量名/变量名++


--


自减运算符


--变量名/变量名--


*


取值运算符


*指针变量


&


取地址运算符


&变量名


!


逻辑非运算符


!表达式


(类型)


强制类型转换


(数据类型)表达式


--


sizeof


长度运算符


sizeof(表达式)


--


3


/



表达式/表达式


左到右


双目运算符


*



表达式*表达式


%


余数(取模)


整型表达式%整型表达式


4


+



表达式+表达式


左到右


双目运算符


-



表达式-表达式


5


<< 


左移


变量<<表达式


左到右


双目运算符


>> 


右移


变量>>表达式


6



大于


表达式>表达式


左到右


双目运算符


>=


大于等于


表达式>=表达式



小于


表达式<表达式


<=


小于等于


表达式<=表达式


7


==


等于


表达式==表达式


左到右


双目运算符


!=


不等于


表达式!= 表达式


8


&


按位与


表达式&表达式


左到右


双目运算符


9


^


按位异或


表达式^表达式


左到右


双目运算符


10


|


按位或


表达式|表达式


左到右


双目运算符


11


&&


逻辑与


表达式&&表达式


左到右


双目运算符


12


||


逻辑或


表达式||表达式


左到右


双目运算符


13


?:


条件运算符


表达式1?

表达式2: 表达式3


右到左


三目运算符


14


=


赋值运算符


变量=表达式


右到左


--


/=


除后赋值


变量/=表达式


--


*=


乘后赋值


变量*=表达式


--


%=


取模后赋值


变量%=表达式


--


+=


加后赋值


变量+=表达式


--


-=


减后赋值


变量-=表达式


--


<<=


左移后赋值


变量<<=表达式


--


>>=


右移后赋值


变量>>=表达式


--


&=


按位与后赋值


变量&=表达式


--


^=


按位异或后赋值


变量^=表达式


--


|=


按位或后赋值


变量|=表达式


--


15



逗号运算符


表达式,表达式,…


左到右


--

说明:
同一优先级的运算符,运算次序由结合方向所决定。

简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符

举例:

结合以下的几个例子进行分析:

eg1:

int  k=7;
int x=12;

printf("%d\n",x%=(k%=5));

//先算括号里面的取余运算符  得到结果x%=2;
//接着再计算x=x%2;  结果为0

eg2:

int k=7;
int x=12;

printf("%d\n",x%=k-k%5);  //运行结果是2

eg3:

int n=10;i=4;
printf("%d\n",n%=i+1);  //运行结果是0

//%=(取余赋值运算符)优先级低于+
时间: 2024-12-26 07:30:38

C语言运算符优先级列表(超级详细的---转载加自己习题)的相关文章

c语言运算符优先级列表

优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右   () 圆括号 (表达式)/函数名(形参表)   . 成员选择(对象) 对象.成员名   -> 成员选择(指针) 对象指针->成员名   2 - 负号运算符 -表达式 右到左 单目运算符 (类型) 强制类型转换 (数据类型)表达式   ++ 自增运算符 ++变量名/变量名++ 单目运算符 -- 自减运算符 --变量名/变量名-- 单目运算符 * 取值运算符 *指针变量 单目运算符 &

C 语言运算符优先级

每当想找哪个运算符优先级高时,很多时候总是想找的就没有,真让人气愤!现在,终于有个我个人觉得非常全的,分享给大家,欢迎拍砖! C语言运算符优先级 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 -- () 圆括号 (表达式)/函数名(形参表) -- . 成员选择(对象) 对象.成员名 -- -> 成员选择(指针) 对象指针->成员名 -- 2 - 负号运算符 -表达式 右到左 单目运算符 ~ 按位取反运算符 ~表达式 ++ 自增运算符 +

C语言运算符优先级

C语言运算符优先级 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 -- () 圆括号 (表达式)/函数名(形参表) -- . 成员选择(对象) 对象.成员名 -- -> 成员选择(指针) 对象指针->成员名 -- 2 - 负号运算符 -表达式 右到左 单目运算符 ~ 按位取反运算符 ~表达式 ++ 自增运算符 ++变量名/变量名++ -- 自减运算符 --变量名/变量名-- * 取值运算符 *指针变量 & 取地址运算符 &

C语言运算符优先级及结合性

今天去翻了下C语言运算符的优先级和结合性,发现当初学习的时候就没认真记住,惭愧.发现一篇讲得不错的文章,编辑了下转来供以后翻阅. C语言运算符优先级表(由上至下,优先级依次递减) 运算符 结合性 () [] -> . 自左向右 ! ~ ++ -- - (type) * & sizeof 自右向左 * / % 自左向右 + - 自左向右 << >> 自左向右 < <= > >= 自左向右 == != 自左向右 & 自左向右 ^ 自左向右

C语言运算符优先级存在的问题

C语言中的符号重载(C专家编程,2.3误做之过,P38) 优先级问题 表达式 人们可能误以为的结果 实际结果 .的优先级高于* ->操作符用于消除这个问题 *p.f p所指对象的字段f (*p).f 对p取f偏移,作为指针,然后进行解除引用操作 *(p.f) []高于* int *ap[] ap是个指向int数组的指针 int (*ap)[] ap是个元素为int指针的数组 int *(ap[]) 函数()高于* int *fp() fp是个函数指针,所指函数返回int int(*fp)() f

C语言运算符优先级和结合性一览表

所谓优先级就是当一个表达式中有多个运算符时,先计算谁,后计算谁.这个其实我们在小学学算术的时候就学过,如1+4÷2. 但是C语言中的运算符已经远不止四则运算中的加减乘除了,还有其他很多运算符.当它们出现在同一个表达式中时先计算谁后计算谁呢?所以本节还是有必要讲一下的.最后我还会将所有运算符展示出来,然后告诉你哪个优先级高.哪个优先级低. 首先不需要专门记忆,也没有必要.因为作为初学者,哪个优先级高.哪个优先级低我们很难记住.就算死记硬背记住了,时间长不用也会忘记.所以当一个表达式中有多个运算符时

C 语言运算符优先级(记忆口诀)

优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右   () 圆括号 (表达式)/函数名(形參表)   . 成员选择(对象) 对象.成员名   -> 成员选择(指针) 对象指针->成员名   2 - 负号运算符 -表达式 右到左 单目运算符 (类型) 强制类型转换 (数据类型)表达式   ++ 自增运算符 ++变量名/变量名++ 单目运算符 -- 自减运算符 --变量名/变量名-- 单目运算符 * 取值运算符 *指针变量 单目运算符 &

C语言运算符优先级和口诀(转)

一共有十五个优先级: 1   ()  []  .  -> 2   !  ~   -(负号) ++  --   &(取变量地址)*   (type)(强制类型)    sizeof 3   * / % 4   + - 5   >> << 6   > >= < <= 7   == != 8   & 9   ^ 10  | 11  && 12  || 13  ?: 14   =  +=  -=  *=  /=   %=  |=

C语言运算符优先级和口诀 (转)

一共有十五个优先级: 1   ()  []  .  -> 2   !  ~   -(负号) ++  --   &(取变量地址)*   (type)(强制类型)    sizeof 3   * / % 4   + - 5   >> << 6   > >= < <= 7   == != 8   & 9   ^ 10  | 11  && 12  || 13  ?: 14   =  +=  -=  *=  /=   %=  |=