![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
C语言中30多个运算符的优先级顺序
要有资料可寻,不要想当然的答案 展开
32多个运算符的优先级顺序如下
1、auto
声明自动变量
2、short
声明短整型变量或函数
3、int
声明整型变量或函数
4、long
声明长整型变量或函数
5、float
声明浮点型变量或函数
6、double
声明双精度变量或函数
7、char
声明字符型变量或函数
8、struct
声明结构体变量或函数
9、union
声明共用数据类型
10、enum
声明枚举类型
11、typedef
用以给数据类型取别名
12、const
声明只读变量
13、unsigned
声明无符号类型变量或函数
14、signed
声明有符号类型变量或函数
15、extern
声明变量是在其他文件正声明
16、register
声明寄存器变量
17、static
声明静态变量
18、volatile
说明变量在程序执行中可被隐含地改变
19、void
声明函数无返回值或无参数,声明无类型指针
20、if
条件语句
21、else
条件语句否定分支(与 if 连用)
22、switch
用于开关语句
23、case
开关语句分支
24、for
一种循环语句
25、do
循环语句的循环体
26、while
循环语句的循环条件
27、goto
无条件跳转语句
28、continue
结束当前循环,开始下一轮循环
29、break
跳出当前循环
30、default
开关语句中的“其他”分支
31、sizeof
计算数据类型长度
32、return
子程序返回语句(可以带参数,也可不带参数)循环条件
扩展资料
1、==和!=优先级相等,其他四个关系运算符的优先级相等,且前者的优先级低于后者。
如2==3>1 应该先计算3>1。
2、关系运算符中,若优先级相同,则“从左往右”结合。
如4>3<2,先计算4>3
3、关系运算符中的优先级小于算术运算符。
如3+4>8-2 相当于(3+4)> (8-2)
优先级高到低:
第一级:圆括号“()”、下标运算符“[]”、分量运算符的指向结构体成员运算符“->”、结构体成员运算符“.”
第二级:逻辑非运算符“!”、按位取反运算符“~”、自增自减运算符“++ --”、负号运算符“-”、类型转换运算符“(类型)”、指针运算符和取地址运算符“*和&”、长度运算符“sizeof”
第三级:乘法运算符“*”、除法运算符“/”、取余运算符“%”
第四级:加法运算符“+”、减法运算符“-”
第五级:左移动运算符“<<”、右移动运算符“>>”
第六级:关系运算符“< > <= >= ”
第七级:等于运算符“==”、不等于运算符“!=”
第八级:按位与运算符“&”
第九级:按位异或运算符“^”
第十级:按位或运算符“|”
第十一级:逻辑与运算符“&&”
第十二级:逻辑或运算符“||”
第十三级:条件运算符“?:”
第十四级:赋值运算符“= += -= *= /= %= >>= <<.= &= |= ^=”
第十五级:逗号运算符“,”
扩展资料:
相关规定:
1、优先级与求值顺序无关。如a+b && b*c,虽然*优先级最高,但这个表达式求值顺序是从左到右。
2、优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。
3、相同优先级中,按结合性进行结合。大多数运算符结合性是从左到右,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。
4、基本的优先级:指针最优,单目运算优于双目运算。如正负号。先算术运算,后移位运算,最后位运算。请特别注意:1 << 3 + 2 & 7等价于 (1 << (3 + 2))&7。逻辑运算最后结合。
参考资料来源:百度百科-运算符优先级
1级优先级 左结合
() 圆括号
[] 下标运算符
-> 指向结构体成员运算符
. 结构体成员运算符
2级优先级 右结合
! 逻辑非运算符
~ 按位取反运算符
++ 自增运算符
-- 自减运算符
- 负号运算符
(类型) 类型转换运算符
* 指针运算符
& 地址与运算符
sizeof 长度运算符
3级优先级 左结合
* 乘法运算符
/ 除法运算符
% 取余运算符
4级优先级 左结合
+ 加法运算符
- 减法运算符
5级优先级 左结合
<< 左移运算符
>> 右移运算符
6级优先级 左结合
<、<=、>、>= 关系运算符
7级优先级 左结合
== 等于运算符
!= 不等于运算符
8级优先级 左结合
& 按位与运算符
9级优先级 左结合
^ 按位异或运算符
10级优先级 左结合
| 按位或运算符
11级优先级 左结合
&& 逻辑与运算符
12级优先级 左结合
|| 逻辑或运算符
13级优先级 右结合
? : 条件运算符
14级优先级 右结合
= += -= *= /= %= &= ^= |= <<= >>= 全为赋值运算符
15级优先级 左结合
, 逗号运算符
|(){}〔〕.(结构体成员运算符)->(指向结构体成员运算符)
|单目运算符 !(非)--(自减)++(自加)~(按位取反)
|算术运算符+ - * % /
|关系运算符< > >= <= ==
|&&和||
|赋值运算符 =
|逗号运算符 (表达式1),(表达式2),(表达式3)...
还有就是左右运算顺序
a+b +为双目运算符, (a>b)?a:b 中? :为3目运算符. !a 为单目运算符.
单目,三目运算符都为自右向左结合,双目运算符除赋值运算符都为自左向右结合.
参考资料: http://www.77169.com/book/program/jscript/htm/jsoperatorpre.htm