c语言运算符及其优先级汇总表口诀
- 格式:doc
- 大小:19.00 KB
- 文档页数:3
c语言运算符号的优先级表
C语言运算符的优先级从高到低如下所示:
1. 括号(小括号、中括号、大括号)
2. 乘法运算符(*、/、%)、除法运算符(/、%)
3. 加法运算符(+)、减法运算符(-)
4. 关系运算符(>、<、>=、<=、==、!=)
5. 逻辑运算符(&&、||、!)
6. 位运算符(位与、位或、位异或、位求反)
7. 赋值运算符(=、+=、-=、*=、/=、%=、&=、|=、^=、<<=、>>=)
8. 条件运算符(?:)
9. 逗号运算符(,)
需要注意的是,运算符的优先级顺序并不是绝对的,有些特殊情况需要根据实际计算顺序来确定。
例如,在表达式中,先进行括号内的运算,然后是乘除法运算,接着是加减法运算。
而位运算符的优先级高于关系运算符,但低于乘除法运算符。
在实际编程过程中,为了避免因运算符优先级导致的错误,可以使用括号来明确指定运算顺序。
C 语言中的运算符优先级分为三级。
以下是一份详细的C 语言运算符优先级顺序列表:
1. 一级优先级(最高优先级):
- 括号:()
- 数组下标:[]
- 结构体成员运算符:.和->
2. 二级优先级:
- 逻辑非运算符:!
- 按位取反运算符:~
- 前缀增量运算符:--
- 前缀减量运算符:-
- 正号运算符:+
- 负号运算符:-
- 类型转换运算符:(类型)
- 指针运算符:&
- 长度运算符:sizeof
3. 三级优先级:
- 乘法运算符:*
- 除法运算符:/
- 取余(模)运算符:%
- 加法运算符:+
- 减法运算符:-
运算符的优先级与结合性相结合,决定了表达式中多个运算符的计算顺序。
结合性表示运算符之间是如何组合的,例如,一级运算符与二级运算符结合时,优先级较高的二级运算符会先进行计算。
以下是一个示例:
```c
int a = 16, b = 4, c = 2;
int d = a + b * c;
int e = a / b * c;
printf("d=%d, e=%d\n", d, e);
```
在这个例子中,乘法和除法的优先级高于加法,所以先计算乘法和除法,然后再进行加法运算。
最终输出结果为:`d=28, e=4`。
c语言优先级口诀C语言优先级口诀在C语言中,运算符的优先级决定了表达式的计算顺序。
了解和掌握运算符的优先级是编写高效、正确的代码的关键。
为了帮助大家记忆C语言中常用运算符的优先级,下面将给出一个简单易记的口诀。
1. 口诀概述2. 逻辑运算符优先级3. 关系运算符优先级4. 算数运算符优先级5. 赋值运算符优先级6. 条件运算符优先级7. 位运算符优先级8. 其他运算符优先级9. 总结1. 口诀概述C语言中运算符的优先级从高到低依次是:逻辑运算符、关系运算符、算数运算符、赋值运算符、条件运算符、位运算符和其他运算符。
2. 逻辑运算符优先级逻辑运算符包括与(&&)、或(||)和非(!)。
其中,非运算符的优先级最高,其次是与运算符,最后是或运算符。
3. 关系运算符优先级关系运算符包括相等(==)、不等(!=)、大于(>)、小于(<)、大于等于(>=)和小于等于(<=)。
关系运算符的优先级比逻辑运算符低。
4. 算数运算符优先级算数运算符包括加法(+)、减法(-)、乘法(*)、除法(/)和取余(%)。
算数运算符的优先级比关系运算符低。
5. 赋值运算符优先级赋值运算符包括简单赋值(=)、加等于(+=)、减等于(-=)、乘等于(*=)、除等于(/=)和取余等于(%=)。
赋值运算符的优先级比算数运算符低。
6. 条件运算符优先级条件运算符是三目运算符,用于简化if-else语句。
条件运算符的优先级比赋值运算符低。
7. 位运算符优先级位运算符包括按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、左移(<<)和右移(>>)。
位运算符的优先级比条件运算符低。
8. 其他运算符优先级其他运算符包括逗号(,)和取地址(&)。
其他运算符的优先级最低。
9. 总结在C语言中,运算符的优先级对于表达式的计算非常重要。
掌握运算符的优先级可以帮助我们编写更加高效和准确的代码。
在C语言中,运算符的优先级顺序如下(从高到低):
1. 括号运算符:()
2. 数组下标运算符:[]
3. 结构体成员运算符:.
4. 指针成员运算符:->
5. 后缀递增/递减运算符:++,--
6. 前缀递增/递减运算符:++,--
7. 一元运算符:+(正号),-(负号),!(逻辑非),~(按位取反),*(指针取值),&(取地址),sizeof
8. 类型转换运算符:(type)
9. 乘法运算符:*,/,%
10. 加法运算符:+,-
11. 移位运算符:<<,>>
12. 关系运算符:>,>=,<,<=
13. 相等运算符:==,!=
14. 按位与运算符:&
15. 按位异或运算符:^
16. 按位或运算符:|
17. 逻辑与运算符:&&
18. 逻辑或运算符:||
19. 条件运算符:?:
20. 赋值运算符:=,+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=
21. 逗号运算符:,
请注意,优先级较高的运算符会先于优先级较低的运算符进行计算。
当有多个运算符出现时,可以使用括号来明确指定计算顺序,从而避免由于优先级导致的歧义或错误。
C语言操作符优先级C语言的运算符包括单目运算符、双目运算符、三目运算符,优先级如下:第1优先级:各种括号,如()、[]等、成员运算符. ;第2优先级:所有单目运算符,如++、–、!、~等;第3优先级:乘法运算符*、除法运算符/、求余运算符%;第4优先级:加法运算符+、减法运算符-;第5优先级:移位运算符<<、>>;第6优先级:大于运算符>、大于等于运算符>=、小于运算符<、小于等于运算符<=;第7优先级:等于运算符==、不等于运算符!=;第8优先级:按位与运算符&;第9优先级:按位异或运算符^;第10优先级:按位或运算符|;第11优先级:逻辑与运算符&&;第12优先级:逻辑或运算符||;第13优先级:三目条件运算符?: ;第14优先级:各种赋值运算符,如=、+=、-=、*=、/= 等;第15优先级:逗号运算, 。
c语言中运算顺序十分重要,经常记也经常忘,为了好找,copy了一份。
C语言的运算符包括单目运算符、双目运算符、三目运算符,优先级如下:第1优先级:各种括号,如()、[]等、成员运算符 . ;第2优先级:所有单目运算符,如++、–、!、~等;第3优先级:乘法运算符*、除法运算符/、求余运算符%;第4优先级:加法运算符+、减法运算符-;第5优先级:移位运算符<<、>>;第6优先级:大于运算符>、大于等于运算符>=、小于运算符<、小于等于运算符<=;第7优先级:等于运算符==、不等于运算符!=;第8优先级:按位与运算符&;第9优先级:按位异或运算符^;第10优先级:按位或运算符|;第11优先级:逻辑与运算符&&;第12优先级:逻辑或运算符||;第13优先级:三目条件运算符?: ;第14优先级:各种赋值运算符,如=、+=、-=、*=、/= 等;第15优先级:逗号运算, 。
c语言中优先级顺序表
C语言中优先级顺序:
1、括号(( ) ):在C语言中,括号具有最高优先级,符号前后的优先级也是一样的;
2、先乘法/除法(*,/):先乘法再除法的优先级高于+-,留意乘除的关系;
3、加法/减法(+,-):加法减法的优先级就相对低一些,但是对于负数来说先计算会更明晰些;
4、左移位(<<)右移位(>>):C语言中左移位右移位的优先级是和乘除/加减平级的,且比其低;
5、关系运算符(>,<,>=,<=,==,!=):C语言中关系运算符的优先级还比较高,且等于号的优先级比最高;
6、位运算符(&,|,^):在C语言中位运算符的优先级位于关系运算符之下,就比上面的低一个级别;
7、逻辑与(&&)及逻辑或(||):C语言中逻辑与及逻辑或的优先级最低,且优先级大小一样。
如何记住C语言的运算符优先级优先决括号成员第一; //括号运算符[]() 成员运算符. ->全体单目第二; //所有的单目运算符比如++ -- +(正) -(负) 指针运算*&乘除余三,加减四; //这个"余"是指取余运算即%移位五,关系六; //移位运算符:<< >> ,关系:> < >= <= 等等于(与)不等排第七; //即== !=位与异或和位或; //这几个都是位运算: 位与(&)异或(^)位或(|)"三分天下"八九十;逻辑或跟与; //逻辑运算符:|| 和&&十二和十一; //注意顺序:优先级(||) 底于优先级(&&)条件高于赋值, //三目运算符优先级排到13 位只比赋值运算符和","高//需要注意的是赋值运算符很多!逗号运算级最低! //逗号运算符优先级最低由于C语言的运算符优先级与C++的不完全一样(主要是增加了几个运算符),所以这个口诀不能完全实用于C++.附录:c 语言运算符优先级表关联操作符:() [] -> .一元操作符:! - ++ -- + - (type) * & sizeof乘法操作符:* / %加法操作符:+ -移位操作符:<< >>关系操作符:< <= > >=“相等”比较:== !=位操作符:&位操作符:^位操作符:|逻辑操作符:&&逻辑操作符:||条件操作符:?:赋值操作符:= += -= 等等逗号:第一、像() [] -> .之类的理所当然是最优先的,其实它们压根也不算什么运算符了。
第二、除了上面的四种运算符之外,接下来就是单目运算符,也就是! ~ ++ -- - (type) * & sizeof 了。
c语言优先级记忆
(逻辑)非算(术运算符)关(系运算符)(逻辑)与(逻辑)或条(件运算符)赋(值运算符),
括号内的不必读出,直接念非算关与或条赋,但要知道每个字是什么意思.
是这样的:张飞算计关羽,或者tiaoxi妇女.
初单算,关逻,条赋逗(我认为最好的断句)
这样记:
《一道简单算术题》
①我“初”次做了一道“简”单的“算术”题。
②由于我没看懂题目内在的“关系”和“逻辑”。
(注意:字母顺序G→L)
③以致乱用“条件”,变量乱“赋值”。
从而导致了运算的错误。
这么简单的题目啊,我闹了笑话。
(也即“逗”得大家一直笑。
)
醋坛酸味灌
味落跳福豆
共44个运算符
醋-初等,4个:()[]-指向结构体成员.结构体成员
坛-单目,9个:!~++---负号(类型)*指针取地址sizeof 长度(结合方向:自右向左)
酸-算术,5个:*/%+-减
味-位移,2个:
灌-关系,6个:====等于!=不等于[标签:内容]。
在C语言中,运算符是按照优先级顺序来进行运算的。
如果有多个运算符在同一个表达式中出现,优先级高的运算符会先进行运算,优先级低的运算符会后进行运算。
以下是C语言中各种运算符的优先级,从高到低排列:
1. ( ):括号运算符
2. [ ]:数组下标运算符
3. .:结构体成员访问运算符
4. ->:指向结构体成员的指针运算符
5. !、~、++、--、+、-:逻辑非、位求反、自增、自减、正号、负号运算符
6. *、/、%:乘法、除法、取模运算符
7. +、-:加法、减法运算符
8. <<、>>:左移、右移运算符
9. <、<=、>、>=:小于、小于等于、大于、大于等于运算符
10. ==、!=:相等、不相等运算符
11. &:按位与运算符
12. ^:按位异或运算符
13. |:按位或运算符
14. &&:逻辑与运算符
15. ||:逻辑或运算符
16. ? ::条件运算符
17. =、+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=:赋值、复合赋值运算符
在运算符优先级相同的情况下,按照从左到右的顺序进行运算。
当然,在实际代码编写和阅读中,为了避免产生歧义和误解,建议在表达式中较为复杂时,使用括号明确运算的先后顺序。
C语言运算符等级
及结合性
运算符号及注释
1级(左结合)
() 圆括号
[]下标运算符
->指向结构体成员运算符. 结构体成员运算符。
2级(右结合)
!逻辑非运算符
~按位取反运算符++前缀增量运算符--前缀减量运算符
+正号运算符
-负号运算符(类型)类型转换运算符*指针运算符
&地址运算符sizeof长度运算符
3级(左结合)*乘法运算符/除法运算符%取余运算符
4级(左结合)+加法运算符
-减法运算符
5级(左结合)<<左移运算符
>>右移运算符
6级(左结合)<、<=、>、>=关系运算符
7级(左结合)==等于运算符
!=不等于运算符
8级(左结合)&按位与运算符
9级(左结合)^按位异或运算符
10级(左结合)|按位或运算符
11级(左结合)&&逻辑与运算符
12级(左结合)||逻辑或运算符
13级(右结合)? :条件运算符
14级(右结合)=、 +=、 -=、 *=、 /=、 %=、 &=、 ^=、 |=、
<<=、 >>=赋值运算符
15级(左结合),逗号运算符
运算符优先级等级口诀
圆方括号、箭头一句号
自增自减非反负、针强地址长度
乘除
加减
再移位
小等大等
等等不等
八位与
九位异
十位或
十一与
十二或
十三疑
十四赋
十五逗。
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,即指向下一个元素。