c语言运算符优先级表
Ⅰ c语言中运算符有哪几种,优先级顺序是怎样
C语言中,运算符除了常见的三大类,算术运算符、关系运算符与逻辑运算符之外,还有一些用于完成特殊任务的运算符。
运算符的运算优先级共分为15 级,1 级最高,15 级最低。 在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符 优先级相同时,则按运算符的结合性所规定的结合方向处理。
一级运算符:标识,常量,字符串文字量,优先级提升表达式最优先执行。
二级运算符:数组下标运算(expression)、函数调用(argument-expression-list)、成员访问(identifier、-> identifier)、后缀自增(i++)、后缀自减(i--)、复合初始化(initializer-list)。
三级运算符:前缀自增(++i)、前缀自减(--i)、单目转型表式式(取地址& ,提领 * , 正号+ ,负号-、位反~ 逻辑否!)、求类型长度(sizeof unary-expression)。
四级运算符:强制表达式成为type-name指定的类型( type-name ) cast-expression。
五级运算符:“ * ” 乘法运算符。
六级运算符:“ + ”加法运算符。
七级运算符:<< 左移运算符;>> 右移运算符。
八级运算符:<、<=、>、>=关系运算符。
九级运算符:“ == ”等于运算符;“ != ”不等于运算符。
十级运算符:“ & ”按位与运算符。
十一级运算符:“ ∧ ”按位异或运算符。
十二级运算符:“ | ”按位或运算符。
十三级运算符:“&&”逻辑与运算符。
十四级运算符:“ || ”逻辑或运算符。
十五级运算符:? :条件运算符。
(1)c语言运算符优先级表扩展阅读
C语言中各运算符的结合性:
1、左结合性(自左至右):
例如算术运算符的结合性是自左至右,即先左后右。如有表达式x-y+z 则y 应先与“-”号结合,执行x-y 运算,然后再执行+z 的运算。这种自左至右的结合方向就称为“左结合性”。
2、右结合性(自右至左)
自右至左的结合方向称为“右结合性”。最典型的右结合 性运算符是赋值运算符。如x=y=z,由于“=”的右结合性,应先执行y=z 再执行x=(y=z)运算。C语言运算符中有不少为右结合性,应注意区别,以避免理解错误。
Ⅱ C语言运算的优先级别和结合方向表是什么的
优先级和结合性
C语言中,运算符的运算优先级共分为15级。1级最高,15级最低。在表达式中,优先级较高的先于优先级较低的进行运算。
而在一个运算量两侧的运算符优先级相同时,
则按运算符的结合性所规定的结合方向处理。
C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。例如算术运算符的结合性是自左至右,即先左后右。如有表达式x-y+z则y应先与“-”号结合,
执行x-y运算,然后再执行+z的运算。这种自左至右的结合方向就称为“左结合性”。而自右至左的结合方向称为“右结合性”。
最典型的右结合性运算符是赋值运算符。如x=y=z,由于“=”的右结合性,应先执行y=z再执行x=(y=z)运算。
C语言运算符中有不少为右结合性,应注意区别,以避免理解错误。
运算符的种类C语言的运算符可分为以下几类:
1.算术运算符
用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(--)共七种。
2.关系运算符
用于比较运算。包括大于(>)、小于(<)、等于(==)、
大于等于(>=)、小于等于(<=)和不等于(!=)六种。
3.逻辑运算符
用于逻辑运算。包括与(&&)、或(||)、非(!)三种。
4.位操作运算符
参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。
5.赋值运算符
用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。
6.条件运算符
这是一个三目运算符,用于条件求值(?:)。
7.逗号运算符
用于把若干表达式组合成一个表达式(,)。
8.指针运算符
用于取内容(*)和取地址(&)二种运算。
9.求字节数运算符
用于计算数据类型所占的字节数(sizeof)。
10.特殊运算符
有括号(),下标[],成员(→,.)等几种。
Ⅲ c语言运算优先级
优先级就是当表达式中有多个运算符时,先计算谁,后计算谁。打个比方,在四则运算中乘除的优先级就高于加减。
但是C语言中的运算符除了加减乘除还有很多,我们也没必要将所有运算符的优先级都记住,这里列出来各个运算符的优先级表,实在需要用到的时候查一下表就行了。而且实际上在编程的时候需要考虑优先级的情况很少,因为如果不知道优先级高低的话,加一个括号就行了,因为括号的优先级是最高的。
比如:
k = (j > i) && (8 == i)
根据优先级的高低,完全可以写成:
k = j > i && 8 == i
第一种写法是比较提倡的,因为一看就知道先计算谁后计算谁,节省了大家的时间还不容易出错。而且加圆括号也是一种编程规范,因为程序不只是写给自己看。
此外运算符还有“目”和“结合性”的概念。“目”就是眼睛的意思,一个运算符需要几个数参与就归为“几目”。C语言中大多数运算符都是双目的,比如 和 运算符;也有单目和三目的,单目运算符如逻辑非 ( !1 );三目运算符即条件运算符,?:也是C语言中的唯一一个三目运算符。
说完了“目”的概念,再来说一说“结合性”。先来煮个栗子:
1 + 2 × 3 / 4
上式中乘法和除法的优先级相同,但计算的时候是从左往右,所以乘和除的结合性就是从左往右,so easy!
C语言中大多数运算符的结合性都是从左往右,只有三个运算符是从右往左的。一个是单目运算符,另一个是三目运算符,还有一个就是双目运算符中的赋值运算符 。运算符的“结合性”也不需要死记硬背,在不断使用中就记住了。
Ⅳ C语言的运算符的优先级是什么
1、最高级:出现同级别运算符时的结合方向是从左往右(下面级别没写结合顺序时,默认是从左往右)。
( )圆括号
[ ]下标运算符号
->指向结构体成员运算符
.结构体成员运算符
Ⅳ C语言提供3种逻辑运算符,按优先级高低它们分别是
C语言提供三种逻辑运算符,按优先级高低它们分别是:逻辑非(!),逻辑与(&&)、逻辑或(||)。
运算规则:
&&:当且仅当两个运算量的值都为“真”时,运算结果为“真”,否则为“假”。
|| :当且仅当两个运算量的值都为“假”时,运算结果为“"假”,否则为“真”。
! :当运算量的值为“真”时,运算结果为“假”;当运算量的值为“假”时,运算结果为“真”。
例如:假定x=5,则(x>=0) && (x<10)的值为“真”,(x<-1) || (x>5)的值为“假”。
(5)c语言运算符优先级表扩展阅读
C语言中运算符分为四类:算数运算符、关系运算符、逻辑运算符、位运算符。
算数运算符(9):+ - * / % ++ --
关系运算符(6):== != > >= < <=
逻辑运算符(6):&& || ! ^ & |
位运算符(7):& | ~ ^ >> << >>>;
1级是特殊运算符:括号()
2级是单目运算符:++,-- 从右向左运算,只需要一个运算对象;
3、4级算数运算符:+ - * /
6、7级关系运算符:== != > >= < <=
11、12级逻辑运算符:&& || ! ^ & |
3~12级是双目运算符:从左向右,需要两个运算对象
13级是三目运算符:需要三个运算对象
14级是赋值运算符:=
Ⅵ 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
子程序返回语句(可以带参数,也可不带参数)循环条件
(6)c语言运算符优先级表扩展阅读
1、==和!=优先级相等,其他四个关系运算符的优先级相等,且前者的优先级低于后者。
如2==3>1 应该先计算3>1。
2、关系运算符中,若优先级相同,则“从左往右”结合。
如4>3<2,先计算4>3
3、关系运算符中的优先级小于算术运算符。
如3+4>8-2 相当于(3+4)> (8-2)
Ⅶ C语言中运算符优先级别的问题
C++中 a++ a--符号的顺序是自右向左.即-a++=-(a++)
但是出现付值时.b=a++ b的值与等号右边的a的原值相等.
其次无论什么顺序都是自右向左(注意(a++)+(a++)+(a++)
这时的如果a的值是6,那么值是18.a在加之前连续自增三次)
运算符."=="与"="相比"=="大于"=".
">"与"="相比">"大于"=".
">"运算符的运算是自左向右.
这都是我学习C++的时候将方法写下的.希望能帮到你!
Ⅷ c语言运算符优先级从高到低的顺序依次为
c语言运算符优先级从高到低的顺序依次如下:
优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。表达式的结合次序取决于表达式中各种运算符的优先级。优先级高的运算符先结合,优先级低的运算符后结合,同一行中的运算符的优先级相同。
不同类型的运算符之间也有相应的优先级顺序。
一个表达式中既可以包括相同类型的运算符,也可以包括不同类型的运算符或者函数。当多种运算符出现在同一个表达式中时,应该先按照不同类型运算符间的优先级进行运算。
各种运算符间的优先级如下:数值运算符、字符串运算符、关系运算符、逻辑运算符。可以用括号改变优先级顺序,使得括号内的运算优先于括号外的运算。对于多重括号,总是由内到外强制表达式的某些部分优先运行。括号内的运算总是最优先计算。
Ⅸ C语言运算符优先级顺序
C语言运算符优先级顺序如下所示:
(9)c语言运算符优先级表扩展阅读
一个表达式可以包含多个运算符。在这种情况下,运算符的优先级决定表达式的哪部分被处理为每个运算符的操作数。例如,按照运算规则,表达式中*、/、以及 % 的优先级比 + 和 - 高。如下列表达式:
a - b * c
相当于 a-(b*c)。如果想让操作数以不同的方式组合在一起,则必须使用括号:
(a - b) * c
如果一个表达式中的两个操作数具有相同的优先级,那么它们的结合律(associativity)决定它们的组合方式是从左到右或是从右到左。例如,算术运算符和操作数的组合方式是从左到右,赋值运算符则是从右到左。
Ⅹ 运算符优先级(C语言中)
1级优先级
左结合
()
圆括号
[]
下标运算符
->
指向结构体成员运算符
.
结构体成员运算符
2级优先级
右结合
!
逻辑非运算符
~
按位取反运算符
++
前缀增量运算符
--
前缀增量运算符
+
正号运算符
-
负号运算符
(类型)
类型转换运算符
*
指针运算符
&
地址与运算符
sizeof
长度运算符
3级优先级
左结合
*
乘法运算符
/
除法运算符
%
取余运算符
4级优先级
左结合
+
加法运算符
-
减法运算符
5级优先级
左结合
<<
左移运算符
>>
右移运算符
6级优先级
左结合
<、<=、>、>=
关系运算符
7级优先级
左结合
==
等于运算符
!=
不等于运算符
8级优先级
左结合
&
按位与运算符
9级优先级
左结合
^
按位异或运算符
10级优先级
左结合
|
按位或运算符
11级优先级
左结合
&&
逻辑与运算符
12级优先级
左结合
||
逻辑或运算符
13级优先级
右结合
?
:
条件运算符
14级优先级
右结合
=
+=
-=
*=
/=
%=
&=
^=
|=
<<=
>>=
全为赋值运算符
15级优先级
左结合
,
逗号运算符
优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。
所有的优先级中,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。其它的都是从左至右结合。
具有最高优先级的其实并不算是真正的运算符,它们算是一类特殊的操作。()是与函数相关,[]与数组相关,而->及.是取结构成员。
其次是单目运算符,所有的单目运算符具有相同的优先级,因此在我认为的
真正的运算符中它们具有最高的优先级,又由于它们都是从右至左结合的,因此*p++与*(p++)等效是毫无疑问的。
另外在c语言里
没有前置后置之分
因为++
--
是右结合所以
右侧优先运算
表现为
"后置优先级比较高"
的假象
前置和后置的区分是因为运算符重载而后加入c++的
接下来是算术运算符,*、/、%的优先级当然比+、-高了。
移位运算符紧随其后。
其次的关系运算符中,<
<=
>
>=要比
==
!=高一个级别,不大好理解。
所有的逻辑操作符都具有不同的优先级(单目运算符出外,!和~)
逻辑位操作符的"与"比"或"高,而"异或"则在它们之间。
跟在其后的&&比||高。
接下来的是条件运算符,赋值运算符及逗号运算符。
在c语言中,只有4个运算符规定了运算方向,它们是&&、|
|、条件运算符及赋值运算符。
&&、|
|都是先计算左边表达式的值,当左边表达式的值能确定整个表达式的值时,就不再计算右边表达式的值。如
a
=
0
&&
b;
&&运算符的左边位0,则右边表达式b就不再判断。
望采纳