C语言运算符优先级列表(超详细)
- 格式:doc
- 大小:83.00 KB
- 文档页数:7
C语言的运算符众多,具有不同的优先级和结合性,我们将它们全部列了出来,方便大家对比和记优先级运算符名称或含义使用形式结合方向说明[]数组下标数组名[常量表达式]()圆括号(表达式)/函数名(形参表).成员选择(对象)对象.成员名->成员选择(指针)对象指针->成员名-负号运算符-表达式单目运算符(类型)强制类型转换(数据类型)表达式++自增运算符++变量名/变量名++单目运算符--自减运算符--变量名/变量名--单目运算符*取值运算符*指针变量单目运算符&取地址运算符&变量名单目运算符!逻辑非运算符!表达式单目运算符~按位取反运算符~表达式单目运算符sizeof 长度运算符sizeof(表达式)/除表达式/表达式双目运算符*乘表达式*表达式双目运算符%余数(取模)整型表达式/整型表达式双目运算符+加表达式+表达式双目运算符-减表达式-表达式双目运算符<<左移变量<<表达式双目运算符>>右移变量>>表达式双目运算符>大于表达式>表达式双目运算符>=大于等于表达式>=表达式双目运算符<小于表达式<表达式双目运算符<=小于等于表达式<=表达式双目运算符==等于表达式==表达式双目运算符!=不等于表达式!= 表达式双目运算符8&按位与表达式&表达式左到右双目运算符9^按位异或表达式^表达式左到右双目运算符10|按位或表达式|表达式左到右双目运算符11&&逻辑与表达式&&表达式左到右双目运算符12||逻辑或表达式||表达式左到右双目运算符13?:条件运算符表达式1? 表达式2: 表达式3右到左三目运算符1左到右2右到左3左到右7左到右4左到右5左到右6左到右=赋值运算符变量=表达式/=除后赋值变量/=表达式*=乘后赋值变量*=表达式%=取模后赋值变量%=表达式+=加后赋值变量+=表达式-=减后赋值变量-=表达式<<=左移后赋值变量<<=表达式>>=右移后赋值变量>>=表达式&=按位与后赋值变量&=表达式^=按位异或后赋值变量^=表达式|=按位或后赋值变量|=表达式15,逗号运算符表达式,表达式,…左到右从左向右顺序运算注:同一优先级的运算符,运算次序由结合方向所决定。
C语言运算符优先级及口诀
一共有十五个优先级:
1 () [] . ->
2 ! ~ -(负号)++ -- &(取变量地址)* (type)(强制
类型) sizeof
3 * / %
4 + -
5 >> <<
6 > >= < <=
7 == !=
8 &
9 ^
10 |
11 &&
12 ||
13 ?:
14 = += -= *= /= %= |= ^= &= >>= <<=
15 ,
括号成员第一; //括号运算符[]() 成员运算符. ->
全体单目第二; //所有的单目运算符比如++、--、+(正)、
-(负) 、指针运算*、&
乘除余三,加减四; //这个"余"是指取余运算即%
移位五,关系六; //移位运算符:<< >> ,关系:> < >= <= 等等于(与)不等排第七; //即== 和!=
位与异或和位或; //这几个都是位运算: 位与(&)异或(^)位或(|) "三分天下"八九十;
逻辑或跟与; //逻辑运算符:|| 和&&
十二和十一; //注意顺序:优先级(||) 低于优先级(&&)
条件高于赋值, //三目运算符优先级排到13 位只比赋值运算
符和","高
逗号运算级最低! //逗号运算符优先级最低。
c语言中优先级顺序表
C语言中优先级顺序:
1、括号(( ) ):在C语言中,括号具有最高优先级,符号前后的优先级也是一样的;
2、先乘法/除法(*,/):先乘法再除法的优先级高于+-,留意乘除的关系;
3、加法/减法(+,-):加法减法的优先级就相对低一些,但是对于负数来说先计算会更明晰些;
4、左移位(<<)右移位(>>):C语言中左移位右移位的优先级是和乘除/加减平级的,且比其低;
5、关系运算符(>,<,>=,<=,==,!=):C语言中关系运算符的优先级还比较高,且等于号的优先级比最高;
6、位运算符(&,|,^):在C语言中位运算符的优先级位于关系运算符之下,就比上面的低一个级别;
7、逻辑与(&&)及逻辑或(||):C语言中逻辑与及逻辑或的优先级最低,且优先级大小一样。
在C语言中,运算符的优先级是按照一定的顺序排列的,优先级高的运算符先于优先级低的运算符进行计算。
以下是一个C语言运算符优先级的列表,从高到低排列:
1. 后缀运算符(例如,递增、递减、取址、函数调用等)
2. 前缀运算符(例如,递增、递减、取反等)
3. 乘法、除法和取模运算符(例如,*、/、%)
4. 加法和减法运算符(例如,+、-)
5. 移位运算符(例如,<<、>>)
6. 关系运算符(例如,<、>、<=、>=)
7. 相等运算符(例如,==、!=)
8. 按位与运算符(例如,&)
9. 按位异或运算符(例如,^)
10. 按位或运算符(例如,|)
11. 逻辑与运算符(例如,&&)
12. 逻辑或运算符(例如,||)
13. 条件运算符(例如,?:)
14. 赋值运算符(例如,=、+=、-=等)
15. 逗号运算符(例如,,)
在表达式中,当出现优先级相同的运算符时,它们的计算顺序由它们的结合性决定。
结合性是从左到右或从右到左的规则。
例如,乘法和
除法运算符的结合性是从左到右的,所以表达式`a * b / c` 中的除法将先于乘法进行。
同样地,加减法运算符的结合性也是从左到右的。
此外,括号可以改变运算符的优先级和结合性。
在括号内的表达式将先于括号外的表达式进行计算。
例如,表达式`(a + b) * c` 中的加法将先于乘法进行。
每当想找哪个运算符优先级高时,很多时候总是想找的就没有,真让人气愤!现在,终于有个我个人觉得非常全的,分享给大家,欢迎拍砖!C语言运算符优先级C语言运算符优先级和口诀一共有十五个优先级:1 () [] . ->2 ! ~ -(负号)++ -- &(取变量地址)* (type)(强制类型) sizeof3 * / %4 + -5 >> <<6 > >= < <=7 == !=8 &9 ^10 |11 &&12 ||13 ?:14 = += -= *= /= %= |= ^= &= >>= <<=15 ,就着多吧结合性:2 13 14 是从右至左其他都是从左至右有问题可以在交流的共同进步括号成员第一; //括号运算符[]() 成员运算符. ->全体单目第二; //所有的单目运算符比如++、--、+(正)、-(负) 、指针运算*、&乘除余三,加减四; //这个"余"是指取余运算即%移位五,关系六; //移位运算符:<< >> ,关系:> < >= <= 等等于(与)不等排第七; //即== 和!=位与异或和位或; //这几个都是位运算: 位与(&)异或(^)位或(|)"三分天下"八九十;逻辑或跟与; //逻辑运算符:|| 和&&十二和十一; //注意顺序:优先级(||) 底于优先级(&&)条件高于赋值, //三目运算符优先级排到13 位只比赋值运算符和","高逗号运算级最低! //逗号运算符优先级最低。
如何记住C语言的运算符优先级优先决括号成员第一; //括号运算符[]() 成员运算符. ->全体单目第二; //所有的单目运算符比如++ -- +(正) -(负) 指针运算*&乘除余三,加减四; //这个"余"是指取余运算即%移位五,关系六; //移位运算符:<< >> ,关系:> < >= <= 等等于(与)不等排第七; //即== !=位与异或和位或; //这几个都是位运算: 位与(&)异或(^)位或(|)"三分天下"八九十;逻辑或跟与; //逻辑运算符:|| 和&&十二和十一; //注意顺序:优先级(||) 底于优先级(&&)条件高于赋值, //三目运算符优先级排到13 位只比赋值运算符和","高//需要注意的是赋值运算符很多!逗号运算级最低! //逗号运算符优先级最低由于C语言的运算符优先级与C++的不完全一样(主要是增加了几个运算符),所以这个口诀不能完全实用于C++.附录:c 语言运算符优先级表关联操作符:() [] -> .一元操作符:! - ++ -- + - (type) * & sizeof乘法操作符:* / %加法操作符:+ -移位操作符:<< >>关系操作符:< <= > >=“相等”比较:== !=位操作符:&位操作符:^位操作符:|逻辑操作符:&&逻辑操作符:||条件操作符:?:赋值操作符:= += -= 等等逗号:第一、像() [] -> .之类的理所当然是最优先的,其实它们压根也不算什么运算符了。
第二、除了上面的四种运算符之外,接下来就是单目运算符,也就是! ~ ++ -- - (type) * & sizeof 了。
在C语言中,运算符的优先级是由语言的语法规则定义的,以下是C语言运算符优先级从高到低的列表:1. 后置 ++ 和 --2. 前置 ++ 和 --,一元 + 和 -,逻辑非 (!)3. 乘法 (*, /) 和除法 (%)4. 加法 (+)、减法 (-) 和位移 (<<, >>)5. 比较 (==, !=, <, >, <=, >=)6. 赋值 (=, +=, -=, *=, /=, %=, <<=, >>=)7. 按位与 (&)8. 按位异或 (^)9. 按位或 (|)10. 逻辑与 (&&)11. 逻辑或 (||)12. 条件 (?:)13. 前置和后置类型转换 (->, .)14. 下标访问 ([])15. 函数调用 (())16. 逗号 (,)17. 成员指针访问 (->)18. 指向成员指针的箭头 (&)19. 类型转换 (type)20. 乘性赋值运算符 *=, /=, %=, <<=, >>=21. 加性赋值运算符 +=, -=22. 减性赋值运算符 -=23. 乘性赋值运算符 *=24. 加性赋值运算符 +=25. 位复制赋值运算符 ^=26. 位非复制赋值运算符 &=, |=, ^=27. 算术赋值运算符-=, *=, /=, %=, +=, -=, *=, /=, %=, <<=, >>=28. 自增、自减运算符 ++ 和 -- (这些是特殊情况,它们的优先级低于赋值运算符)请注意,这些优先级是根据语言规则确定的,但实际的实现可能会有所不同。
此外,如果你在一个表达式中使用了不同类型的运算符,那么实际的执行顺序可能会根据运算符的优先级和结合性来确定。
例如,乘法和除法运算符具有比加法和减法运算符更高的优先级,但在一个表达式中,如果一个操作数被括号包围,那么括号内的表达式将首先被计算。