首页 > 其他分享 >c语言运算符优先级表(c语言中各种运算符的优先级)

c语言运算符优先级表(c语言中各种运算符的优先级)

时间:2022-10-24 14:03:36浏览次数:43  
标签:优先级 语言 运算符 按位 strDest 表达式 赋值


运算符的优先级是怎样的?

运算符的优先级从高到低大致是:单目运算符、算术运算符、关系运算符、逻辑运算符、条件运算符、赋值运算符()和逗号运算符

c语言上运算符优先级是怎样的啊

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

c语言运算符的优先级

本来是表格的形式,复制过来就变形了,不过可以提供你要的信息,如果不明白,可以hi我,我给你个资料

优先级 运算符 名称或含义 使用形式 结合方向 说明

[] 数组下标 数组名[常量表达式]

左到右 () 圆括号 (表达式) /函数名(形

. 成员选择(对象) 对象.成员名

-> 成员选择(指针) 对象指针->成员名

- 负号运算符 -表达式

单目运算符

(类型) 强制类型转换 (数据类型)表达式

++ 自增运算符 ++变量名/变量名++ 单目运算符

-- 自减运算符 --变量名/变量名-- 单目运算符

* 取值运算符 *指针变量 单目运算符

& 取地址运算符 &变量名 单目运算符

! 逻辑非运算符 !表达式 单目运算符

~ 按位取反运算符 ~表达式 单目运算符

sizeof 长度运算符 sizeof(表达式)

/ 除 表达式/表达式

双目运算符

* 乘 表达式*表达式 双目运算符

% 余数(取模) 整型表达式/整型表

达式 双目运算符

+ 加 表达式+表达式 左到右 双目运算符

- 减 表达式-表达式 双目运算符

<< 左移 变量<

>> 右移 变量>>表达式 双目运算符

> 大于 表达式>表达式

双目运算符

>= 大于等于 表达式>=表达式 双目运算符

< 小于 表达式

<= 小于等于 表达式<=表达式 双目运算符

== 等于 表达式==表达式 左到右 双目运算符

!= 不等于 表达式!= 表达式 双目运算符

8 & 按位与 表达式&表达式 左到右 双目运算符

9 ^ 按位异或 表达式^表达式 左到右 双目运算符

10 | 按位或 表达式|表达式 左到右 双目运算符

11 && 逻辑与 表达式&&表达式 左到右 双目运算符

12 || 逻辑或 表达式||表达式 左到右 双目运算符

13 ?: 条件运算符 表达式 1? 表达式 2:

表达式 3

右到左 三目运算符

= 赋值运算符 变量=表达式

/= 除后赋值 变量/=表达式

*= 乘后赋值 变量*=表达式

%= 取模后赋值 变量%=表达式

+= 加后赋值 变量+=表达式

-= 减后赋值 变量-=表达式

<<= 左移后赋值 变量<<=表达式

>>= 右移后赋值 变量>>=表达式

&= 按位与后赋值 变量&=表达式

^= 按位异或后赋值 变量^=表达式

|= 按位或后赋值 变量|=表达式

15 , 逗号运算符 表达式,表达式,… 左到右 从左向右顺序运算

c语言运算符优先级表(c语言中各种运算符的优先级)_双目运算符

c语言运算符及优先级

C语言运算符及其优先级汇总表口诀

圆下箭头一顿号

非凡增减富强针地长

三乘除,四加减,五移位

千万别把鱼忘记,它在盛饭的厨子里

小灯大灯灯灯不等

爸喂鱼,舅疑惑,裸鸡也疑惑

十三姨,十四父,十五逗,兜到低

“圆下箭头一顿号”指的是第15级的运算符。其中圆指的是运算符(),下指的是下标运算符[],箭头指的是指向结构体成员运算符->,顿号指的是结构体成员运算符、

“非凡增减富强针地长”指的是第14级的运算符。其中非指的是逻辑运算符!,凡指的是按位取反运算符~,增减指的是自增和自减运算符++和--,富指的是负号运算符-,强指的是类型转换运算符(类型),针指的是指针运算符*,地指的是地址运算符&,长指的是长度运算符Sizeof

“三乘除,四加减,五移位” 指的是第13级到第11级的运算符。其中三四五并无实际意义,只是起区分级别而已。也可以想象三指的是第13级运算符。乘除指的是乘法运算符*和除法运算符/,加减指的是加法运算符+和减法运算符-,移位指的是左移运算符<>

“千万别把鱼忘记,它在盛饭的厨子里”指的是求余运算符%,它位于盛饭的厨子里,即指和乘法运算符、除法运算符在一起。

“小灯大灯灯灯不等” 指的是第10级到第9级的运算符。其中小灯大灯指的是关系运算符和>=,灯灯指的是等于运算符==,不等指的是不等于运算符!=

“爸喂鱼,舅疑惑,裸鸡也疑惑”指的是第8级到第4级的运算符。其中,爸喂鱼之指的是第8级的按位与运算符&,舅疑惑指的是第7级的按位异或运算符^和第6级的按位或运算符||,裸鸡也疑惑指的是第5级、第4级的逻辑与运算符&&和逻辑或运算符||

“十三姨,十四父,十五逗,兜到低”指的是第3级到第1级的运算符。其中,十三姨指的是条件运算符?: (三有双重含义,即指?:的优先级别是三,它的运算符类型也是三目,?难道不是姨即疑惑吗?),十四父的十四没有实际意义,父指的是赋值运算符=、+=、-=、*=、/=、%=、>>=、<<=、&=、^=和|= ,十五逗指的是第1级的运算符,兜到低指的是15级运算符以,结束。

附录:C语言运算符及优先级

优先级运算符含义运算符类型结合方向

15()圆括号单目自左向右

[]下标运算符

—>指向结构体成员运算符

、结构体成员运算符

14!逻辑非运算符自右向左

~按位取反运算符

++自增运算符

--自减运算符

-负号运算符

(类型)类型转换运算符

*指针运算符

&地址运算符

Sizeof长度运算符

13*乘法运算符双目自左向右

/除法运算符

%求余运算符

12+加法运算符

-减法运算符

11<

>>右移运算符

10、>=关系运算符

9==等于运算符

!=不等于运算符

8&按位与运算符

7^按位异或运算符

6|按位或运算符

5&&逻辑与运算符

4||逻辑或运算符

3?:条件运算符三目自右向左

2=、+=、-=、*=、

/=、%=、>>=、

<<=、&=、^=、|=赋值运算符双目

1,逗号运算符双目自左向右

括号成员第一;//括号运算符[]() 成员运算符. ->

全体单目第二;//所有的单目运算符比如++ -- +(正) -(负) 指针运算*&

乘除余三,加减四;//这个"余"是指取余运算即%

移位五,关系六;//移位运算符:<< >> ,关系:> < >= <= 等

等于(与)不等排第七;//即== !=

位与异或和位或;//这几个都是位运算: 位与(&)异或(^)位或(|)

"三分天下"八九十;

逻辑或跟与//逻辑运算符:|| 和 &&

十二和十一;//注意顺序:优先级(||) 底于 优先级(&&)

条件高于赋值,//三目运算符优先级排到 13 位只比赋值运算符和","高//需要注意的是赋值运算符很多!

逗号运算级最低!//逗号运算符优先级最低

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

((*strDest++=*strSrc++)!='\0'); :

重点:++后增运算符优先级高于*

1.*strDest++相当于 *(strDest++)

2.由于是后自增,故执行顺序为:

*strDest=*strSrc

strDest++ strsrc++ //该级顺序不明

将*strDest与'\0'比较 //即,整个表达式的值为*strDest与'\0'的比较结果

值得注意的是,对于赋值表达式,表达式本身的值等于左边子表达式的值。

通过以上深入的分析,我们知道这个表达式完成了以下多个功能:

1.对于指针strDest, strSrc,将strSrc所指的内存空间的值赋给由strDest所指的内存空间。

2.判断赋值后的strDest所指的内存空间的指是否等于0。

3.对于指针strDest,strSrc,他们的值分别加1,即指向下一个元素。

即:该表达式实现了以下三个功能:

1.对于指针strDest, strSrc,将strSrc所指的内存空间的值赋给由strDest所指的内存空间。

2.判断赋值后的strDest所指的内存空间的值是否等于0。

3.对于指针strDest,strSrc,他们的值分别加1,即指向下一个元素。去百度呀,网上一大堆

标签:优先级,语言,运算符,按位,strDest,表达式,赋值
From: https://blog.51cto.com/yetaotao/5789577

相关文章