当前位置:首页 » 编程语言 » c语言运算符的优先级
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言运算符的优先级

发布时间: 2022-02-23 10:41:57

c语言运算符优先级口诀

C语言运算符及其优先级汇总表口诀 圆下箭头一顿号 非凡增减富强针地长 三乘除,四加减,五移位 千万别把鱼忘记,它在盛饭的厨子里 小灯大灯灯灯不等 爸喂鱼,舅疑惑,裸鸡也疑惑 十三姨,十四父,十五逗,兜到低 “圆下箭头一顿号”指的是第15级的运算符。其中圆指的是运算符(),下指的是下标运算符[],箭头指的是指向结构体成员运算符->,顿号指的是结构体成员运算符、 “非凡增减富强针地长”指的是第14级的运算符。其中非指的是逻辑运算符!,凡指的是按位取反运算符~,增减指的是自增和自减运算符++和--,富指的是负号运算符-,强指的是类型转换运算符(类型),针指的是指针运算符*,地指的是地址运算符&,长指的是长度运算符Sizeof “三乘除,四加减,五移位” 指的是第13级到第11级的运算符。其中三四五并无实际意义,只是起区分级别而已。也可以想象三指的是第13级运算符。乘除指的是乘法运算符*和除法运算符/,加减指的是加法运算符+和减法运算符-,移位指的是左移运算符<<和右移运算符>> “千万别把鱼忘记,它在盛饭的厨子里”指的是求余运算符%,它位于盛饭的厨子里,即指和乘法运算符、除法运算符在一起。 “小灯大灯灯灯不等” 指的是第10级到第9级的运算符。其中小灯大灯指的是关系运算符<、<=、>和>=,灯灯指的是等于运算符==,不等指的是不等于运算符!= “爸喂鱼,舅疑惑,裸鸡也疑惑”指的是第8级到第4级的运算符。其中,爸喂鱼之指的是第8级的按位与运算符&,舅疑惑指的是第7级的按位异或运算符^和第6级的按位或运算符||,裸鸡也疑惑指的是第5级、第4级的逻辑与运算符&&和逻辑或运算符|| “十三姨,十四父,十五逗,兜到低”指的是第3级到第1级的运算符。其中,十三姨指的是条件运算符?: (三有双重含义,即指?:的优先级别是三,它的运算符类型也是三目,?难道不是姨即疑惑吗?),十四父的十四没有实际意义,父指的是赋值运算符=、+=、-=、*=、/=、%=、>>=、<<=、&=、^=和|= ,十五逗指的是第1级的运算符,兜到低指的是15级运算符以,结束。

② C语言运算符的优先级!

从右往左优先
先执行a-=a,a=0
然后a+=0,就是0+0=0了
加个括号a+=(a-=a)

你想的好像笔误咯?代码第一行应该是-=吧?

-------------------
这里变量a执行一次之后就被重新赋值了,不再是8了
声明成静态才行

③ 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。

五级运算符:“ * ” 乘法运算符。

六级运算符:“ + ”加法运算符。

七级运算符:<< 左移运算符;>> 右移运算符。

八级运算符:<、<=、>、>=关系运算符。

九级运算符:“ == ”等于运算符;“ != ”不等于运算符。

十级运算符:“ & ”按位与运算符。

十一级运算符:“ ∧ ”按位异或运算符。

十二级运算符:“ | ”按位或运算符。

十三级运算符:“&&”逻辑与运算符。

十四级运算符:“ || ”逻辑或运算符。

十五级运算符:? :条件运算符。

(3)c语言运算符的优先级扩展阅读

C语言中各运算符的结合性:

1、左结合性(自左至右):

例如算术运算符的结合性是自左至右,即先左后右。如有表达式x-y+z 则y 应先与“-”号结合,执行x-y 运算,然后再执行+z 的运算。这种自左至右的结合方向就称为“左结合性”。

2、右结合性(自右至左)

自右至左的结合方向称为“右结合性”。最典型的右结合 性运算符是赋值运算符。如x=y=z,由于“=”的右结合性,应先执行y=z 再执行x=(y=z)运算。C语言运算符中有不少为右结合性,应注意区别,以避免理解错误。

④ 求C语言运算符优先级

优先级 运算符 名称或含义 使用形式 结合方向 说明
1 [] 数组下标 数组名[常量表达式] 左到右
() 圆括号 (表达式)/函数名(形参表)
. 成员选择(对象) 对象.成员名
-> 成员选择(指针) 对象指针->成员名
2 - 负号运算符 -表达式 右到左 单目运算符
(类型) 强制类型转换 (数据类型)表达式
++ 自增运算符 ++变量名/变量名++ 单目运算符
-- 自减运算符 --变量名/变量名-- 单目运算符
* 取值运算符 *指针变量 单目运算符
& 取地址运算符 &变量名 单目运算符
! 逻辑非运算符 !表达式 单目运算符
~ 按位取反运算符 ~表达式 单目运算符
sizeof 长度运算符 sizeof(表达式)
3 / 除 表达式/表达式 左到右 双目运算符
* 乘 表达式*表达式 双目运算符
% 余数(取模) 整型表达式/整型表达式 双目运算符
4 + 加 表达式+表达式 左到右 双目运算符
- 减 表达式-表达式 双目运算符
5 << 左移 变量<<表达式 左到右 双目运算符
>> 右移 变量>>表达式 双目运算符
6 > 大于 表达式>表达式 左到右 双目运算符
>= 大于等于 表达式>=表达式 双目运算符
< 小于 表达式<表达式 双目运算符
<= 小于等于 表达式<=表达式 双目运算符
7 == 等于 表达式==表达式 左到右 双目运算符
!= 不等于 表达式!= 表达式 双目运算符
8 & 按位与 表达式&表达式 左到右 双目运算符
9 ^ 按位异或 表达式^表达式 左到右 双目运算符
10 | 按位或 表达式|表达式 左到右 双目运算符
11 && 逻辑与 表达式&&表达式 左到右 双目运算符
12 || 逻辑或 表达式||表达式 左到右 双目运算符
13 ?: 条件运算符 表达式1? 表达式2: 表达式3 右到左 三目运算符
14 = 赋值运算符 变量=表达式 右到左
/= 除后赋值 变量/=表达式
*= 乘后赋值 变量*=表达式
%= 取模后赋值 变量%=表达式
+= 加后赋值 变量+=表达式
-= 减后赋值 变量-=表达式
<<= 左移后赋值 变量<<=表达式
>>= 右移后赋值 变量>>=表达式
&= 按位与后赋值 变量&=表达式
^= 按位异或后赋值 变量^=表达式
|= 按位或后赋值 变量|=表达式
15 , 逗号运算符 表达式,表达式,… 左到右 从左向右顺序运算
说明:
同一优先级的运算符,运算次序由结合方向所决定。
简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符

⑤ c语言运算符的优先级

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

优先级 运算符 名称或含义 使用形式 结合方向 说明
1
[] 数组下标 数组名[常量表达式]
左到右 () 圆括号 (表达式) /函数名(形
参表)
. 成员选择(对象) 对象.成员名
-> 成员选择(指针) 对象指针->成员名

2
- 负号运算符 -表达式
右到左
单目运算符
(类型) 强制类型转换 (数据类型)表达式
++ 自增运算符 ++变量名/变量名++ 单目运算符
-- 自减运算符 --变量名/变量名-- 单目运算符
* 取值运算符 *指针变量 单目运算符
& 取地址运算符 &变量名 单目运算符
! 逻辑非运算符 !表达式 单目运算符
~ 按位取反运算符 ~表达式 单目运算符
sizeof 长度运算符 sizeof(表达式)

3
/ 除 表达式/表达式
左到右
双目运算符
* 乘 表达式*表达式 双目运算符
% 余数(取模) 整型表达式/整型表
达式 双目运算符

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

5
<< 左移 变量<<表达式 左到右 双目运算符
>> 右移 变量>>表达式 双目运算符

6
> 大于 表达式>表达式
左到右
双目运算符
>= 大于等于 表达式>=表达式 双目运算符
< 小于 表达式<表达式 双目运算符
<= 小于等于 表达式<=表达式 双目运算符

7

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

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

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

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

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

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

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

13 ?: 条件运算符 表达式 1? 表达式 2:
表达式 3
右到左 三目运算符

14
= 赋值运算符 变量=表达式
右到左
/= 除后赋值 变量/=表达式
*= 乘后赋值 变量*=表达式
%= 取模后赋值 变量%=表达式
+= 加后赋值 变量+=表达式
-= 减后赋值 变量-=表达式
<<= 左移后赋值 变量<<=表达式
>>= 右移后赋值 变量>>=表达式
&= 按位与后赋值 变量&=表达式
^= 按位异或后赋值 变量^=表达式
|= 按位或后赋值 变量|=表达式

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

⑥ C语言的运算符的优先级是什么

1、最高级:出现同级别运算符时的结合方向是从左往右(下面级别没写结合顺序时,默认是从左往右)。

( )圆括号

[ ]下标运算符号

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

.结构体成员运算符

⑦ C语言里面的运算符优先顺序如何

C语言中,运算符的运算优先级共分为15 级。1 级最高,15 级最低。 在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符 优先级相同时,则按运算符的结合性所规定的结合方向处理。

各等级运算符如下:

(以下说明中,对传统的1级和2级做了细化,1和2对应传统1级,3和4对应传统2级,所以细化说明共有17级。)

1、基本表达式 1级

基本表达式(Primary expressions),主要是用于运算符之间,做为运算数。

标识,常量,字符串文字量,优先级提升表达式最优先执行。

优先级提升表达式是指圆括号包围的表达式,如“( expression )”


2、后缀表达式 2级

postfix-expression [ expression ],数组下标运算。

postfix-expression ( argument-expression-list),函数调用,括号内的参数可选。

postfix-expression . identifier,成员访问,

postfix-expression -> identifier,成员访问,->号之前应为指针。

postfix-expression ++,后缀自增

postfix-expression --,后缀自减

( type-name ) { initializer-list }

( type-name ) { initializer-list , } 复合初始化,C99后新增。

3、单目/一元运算 3级

++ unary-expression 前缀自增

-- unary-expression 前缀自减

unary-operator cast-expression 单目转型表式式, 包括 取地址& ,提领 * , 正号+ ,负号- 位反~ 逻辑否!。

sizeof unary-expression 求类型长度,对表达式求类型长度

sizeof ( type-name ) 求类型长度


4、强制类型表达式 4级

( type-name ) cast-expression,强制表达式成为type-name指定的类型。


5、乘法表达式 5级

“ * ” 乘法运算符;“ / ”除法运算符;“ % ” 取余运算符。


6、加法运算符 6级

“ + ”加法运算符;“ - ”减法运算符。


7、移位运算符 7级

<< 左移运算符;>> 右移运算符。


8、关系运算符 8级

<、<=、>、>=关系运算符。


9、相等运算符 9级

“ == ”等于运算符;“ != ”不等于运算符。


10、位与运算符 10级

“ & ”按位与运算符


11、位异或运算符 11级

“ ∧ ”按位异或运算符(Bitwise exclusive OR operator)。


12、位或运算符 12 级

“ | ”按位或运算符(Bitwise inclusive OR operator)。


13、逻辑与运算符 13级

“&&”逻辑与运算符。


14、逻辑或运算符 14 级

“ || ”逻辑或运算符。


15、三元条件运算符 15级

? :条件运算符。


16、赋值运算符 16 级

=、 +=、 -=、 *=、 /=、 %=、 &=、 ^=、 |=、 <<=、 >>=赋值运算符。


17、逗号运算符 17级

“,”逗号运算符。

具体可参见下图:

⑧ C语言中的逻辑运算符按优先级别是

要了解c语言运算符优先级高低就先从通常数学上运算优先级高低说起。
通常,一个数学算式里如果有加减乘除和括号,我们会先算括号里面的式子,再算括号外面的乘除再然后才是加减。那么这时候我们说括号的优先级比加减乘除的要高,所以我们就先计算括号里的式子。然后是乘除,再然后才是加减。其中加减乘除就是运算符。所以运算符的高低决定了运算的先后顺序。
同理。C语言中的运算优先级和这一个样,只要你把运算符的优先级记住就可以了。

⑨ C语言运算符优先级顺序

一共有十五个优先级:
1
()
[]
.
->
2
!
~
-(负号)
++
--
&(取变量地址)*
(type)(强制类型)
sizeof
3
*
/
%
4
+
-
5
>>
<<
6
>
>=
<
<=
7
==
!=
8
&
9
^
10
|
11
&&
12
||
13
?:
14
=
+=
-=
*=
/=
%=
|=
^=
&=
>>=
<<=
15
,
就着多吧
结合性:2
13
14
是从右至左
其他都是
从左至右
有问题可以在交流的
共同进步