搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
2023面试高手
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
【AI落地应用实战】如何让扫描工具更会思考——智能高清滤镜2.0实战测评
2
看不懂花书?博士教你如何深入深度学习,从编程基础到完整的项目实战
3
C语言之联合和枚举_c语言枚举和联合
4
密码系统的安全性
5
cmd 启动 jar包设置成 桌面的 .bat文件_windows 运行的 java -jar 服务 变成 bat
6
RayLink远程控制软件【文件传输】功能正式上线!!!_raylink连接同一网络中的电脑
7
div html表格样式,table 表格 div + css 样式
8
Android继承View,获取onDraw()方法的图像_android draw 方法 画的元素 怎样获取
9
跨平台编程:在Conda中搭建R语言环境的终极指南_conda创建r环境
10
IntelliJ IDEA 2023.3发布,AI 助手出世,新特性杀麻了!
当前位置:
article
> 正文
C语言中运算符的优先级_复合运算符和算术运算符的优先级
作者:2023面试高手 | 2024-06-16 21:39:29
赞
踩
复合运算符和算术运算符的优先级
一、前言
优先级
:
C语言中,运算符的运算优先级共分为15
级。1
级最高,15
级最低。
在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符
优先级相同时,则按运算符的结合性所规定的结合方向处理。
结合性
:
C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。例如算术运算符的结合性是自左至右,即先左后右。如有表达式 x-y+z
则 y
应先与“-”号结合,执行 x-y
运算,然后再执行 +z
的运算。这种自左至右的结合
方向就称为“左结合性”。而自右至左的结合方向称为“右结合性”。最典型的右结合
性运算符是赋值运算符。如 x=y=z ,由于“=”的右结合性,应先执行 y=z
再执行 x=(y=z) 运算。C语言运算符中有不少为右结合性,应注意区别,以避免理解错误。
二、说明
*
**
所有的优先级中,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。其它的都是从左至右结合。
1、具有最高优先级的其实并不算是真正的运算符,它们算是一类特殊的操作。()是与函数相关,[]与数组相关,而->及.是取结构成员。
2、其次是单目运算符,所有的单目运算符具有相同的优先级,因此在我认为的
真正的运算符中它们具有最高的优先级,又由于它们都是从右至左结合的,因此*p++与*(p++)等效是毫无疑问的。
3、另外在C语言里,没有前置后置之分,因为++
--
是右结合所以右侧优先运算,表现为
操作数后置优先级比较高
的假象,前置和后置的区分是因为运算符重载而后加入C++的
4、接下来是算术运算符,*、/、%的优先级当然比+、-高了。
5、移位运算符紧随其后。
6、其次的关系运算符中,<
<=
>
>=要比
==
!=高一个级别,不大好理解。
7、所有的逻辑操作符都具有不同的优先级(单目运算符除外,!和~)
1>逻辑位操作符的与比或高,而异或则在它们之间。
2>跟在其后的&&比||高。
8、接下来的是条件运算符,赋值运算符及逗号运算符。
9、在C语言中,只有4个运算符规定了运算方向,它们是&&、|
|、条件运算符及赋值运算符。
&&、|
|都是先计算左边表达式的值,当左边表达式的值能确定整个表达式的值时,就不再计算右边表达式的值。
1>如
a
=
0
&&
b;
&&运算符的左边位0,则右边表达式b就不再判断。
2>在条件运算符中。如a?b:c;先判断a的值,再根据a的值对b或c之中的一个进行求值。
3>赋值表达式则规定先对右边的表达式求值,因此使
a
=
b
=
c
=
6;成为可能。
三、口诀注释
1、优先级等级口诀
圆方括号、箭头一句号,
自增自减非反负、针强地址长度,
乘除,加减,再移位,
小等大等、等等不等,
八位与,七位异,六位或,五与,四或,三疑,二赋,一真逗。
其中“,”号为一个等级分段。
2、优先级等级注释
“圆方括号、箭头一句号”指的是第15级的运算符。其中圆方括号很明显“()、[]”,箭头
指的是指向结构体成员运算符“->”,句号
指的是结构体成员运算符“.”
;
“自增自减非反负、针强地址长度”指的是第14级的运算符。其中
非
指的是逻辑运算符“!”,反
指的是按位取反运算符“~”,负
指的是负号运算符“-”,针
指的是指针运算符“*”,强
指的是强制类型转换运算符,地址
指的是地址运算符“&”,长度
指的是长度运算符“sizeof
”;
“乘除,加减,再移位”移位指的是左移运算符“<<”和右移运算符“>>”,其中除法还包括了
取余运算符“%”;
“小等大等、等等不等”
指的是第10级到第9级的运算符:<、<=、>和>=,等等指的是等于运算符==,不等指的是不等于运算符!=;
“ 八位与,七位异,六位或”其中
八位与
指的是第8级的
按位与
运算符“&”,七位异
指的是第7级的按位异或运算符“^”,六位或
指的是第6级的按位或运算符“|”;
“五与,四或”指的是第5级、第4级的逻辑与运算符“&&”和逻辑或运算符“||”;
“三疑,二赋,一真逗”指的是第3级到第1级的运算符。其中,三疑指的是条件运算符“?:”
(三有双重含义:即指优先级别是三,它的运算符类型也是三目,疑也取“?”之意),二赋
指的是赋值运算符=、+=、-=、*=、/=、%=、>>=、<<=、&=、^=和|=
,一真逗
指的是第1级的“,”运算符,真字只是为了语句需要罢了。
由于C语言的运算符优先级与C++的不完全一样(主要是增加了几个运算符),所以这个口诀不能完全实用于C++.但是应该能够兼容,大家可以比较一下他们的区别应该就能够很快掌握C++的优先级的!
3、应用举例
1、赋值运算符:a=5;
a=b=0;
解释:第一个赋值语句把5赋给变量a;第二个赋值语句的意思是把0同时赋值给两个变量。这是因为赋值语句是从右向左运算的,也就是说从右端开始计算,先b=0,然后a=b。
2、复合赋值运算符:a=1;a+=3;
解释: 上面第二个赋值语句等价于a=a+3;即a=4。
3、算术运算符:Area=Height*Width;num=num1+num2/num3-num4;
第一个赋值语句Height和Width相乘结果赋给变量Area;第二个赋值语句先完成num2与num3的整除运算,然后与num1相加,再减去num4,结果赋给num。运算符运算顺序先算乘除再算加减。单目正和单目负最先运算。
4、逻辑运算符:a=1,b=1;
a||b-1;
解释:因为a=1为真值,所以不管b-1是不是真值,总的表达式一定为真值,这时后面的表达式就不会再计算了。
5、关系运算符:if(a>0)...
解释: 如果a>0,则执行if语句中的内容,否则退出。
6、条件运算符:a=(b>0)?b:-b;
解释:当b>0时,a=b;当b不大于0时,a=-b;其实上面的意思就是把b的绝对值赋值给a。
7、逗号运算符:b=2,c=7,d=5;
a=(++b,c--,d+3);
解释: 有三个表达式,用逗号分开,所以最终的值应该是最后一个表达式的值,也就是d+3=8,所以a=8。
8、位逻辑运算符
包括:1。&位与符
2。|位或符
3。^位异或符
4。~位取反符
以操作数12为例:位运算符将数字12视为1100。位运算符将操作数视为位而不是数值。 数值可以是任意进制的:十进制、八进制或十六进制。 位运算符则将操作数转化为二进制,并相应地返回1或0。
位运算符将数字视为二进制值,并按位进行相应运算,运算完成后再重新转换为数字。例如:表达式10&15表示(1010
&
1111),它将返回表示1010的值10。因为真真得真,或者是11得1,同位全是1结果也是1
1>表达式10|15表示(1010
|
1111),它将返回表示1111的值15。假假得假。全零得零。
2>表达式10^15表示(1010
^
1111),
它将返回表示0101的值5。此时是同性相斥,相同的就为假。
3>表达式~10表示(~1010),它将返回表示0101的值
-11。此号好理解,按位取反。
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/2023面试高手/article/detail/728362
推荐阅读
article
【
RabbitMQ
、
Spring
Boot
】
Spring
Boot
整合
RabbitMQ
实现并发和
限流
...
一、并发:一个listener对应多个consumer介绍:默认情况一下,一个listener对应一个consumer。...
赞
踩
article
搭建
Mirror
镜像集群 ---
HAProxy
代理
服务器
_
mirror
服务器
搭建...
搭建
Mirror
镜像集群 ---
HAProxy
代理
服务器
_
mirror
服务器
搭建
mirror
服务器
搭建 ...
赞
踩
article
ICLR2022
录用的
Transformer
相关
论文
合集
_
transformer
2022
论文
...
论文
相关内容请点击下方相应链接:
论文
一《UNIFORMER: UNIFIED TRANSFORMER FOR EFFIC...
赞
踩
article
华为
OD机试C卷--
火星
文
计算
(
Java
& JS &
Python
)_
python
【
华为
o
d
机...
已知
火星
人使用的运算符为#、$,其与地球人的等价公式如下:x#y = 2*x+3*y+4x$y = 3*x+y+21.其...
赞
踩
article
常见
排序
算法
...
然后让左边找到的值与右边找到的值交换位置,如果不大于key的值或者不小于key的值左边继续往右走右边继续往左走。当beg...
赞
踩
article
数学建模:插值与
拟合
—
拟合
问题
的
python
求解_
python
数据
拟合
、
参数估计
、插值等
数据
处理算法...
目录1.polyfit 进行多项式
拟合
2.curve_fitPython
的
多个模块中,有很多函数或方法可以
拟合
未知参数...
赞
踩
article
Zookeeper
配置
环境变量
...
编辑 “/etc/profile” 文件添加内容:# 配置
Zookeeper
环境变量
开始export ZOOKEEPER...
赞
踩
article
LeetCode387
:
字符
串
中
的
第一个
唯一
字符
_编程题
:
字符
串
中
的
第一个
唯一
字符
...
目录一、题目二、示例三、思路四、代码一、题目给定一个
字符
串
,找到它
的
第一个
不重复
的
字符
,并返回它
的
索引。如果不存在,则返...
赞
踩
article
Python
速成
-基础
语法
_
python
速成
语法
...
因为我自己在准备保研推免事宜,在参加预推免阶段,有一个学校上机测试只能用
Python
,可惜我没学过,只能
速成
了(我也不晓...
赞
踩
article
AI国际顶会
ICLR
2024
结果揭晓,
蚂蚁
集团
11篇
论文
入选_
icml
2024
流程...
每年,
ICLR
Oral
论文
中一大半的
论文
会成为“
ICLR
Best Paper”,同时也代表了新一年的研究方向,今年I...
赞
踩
article
ICLR2022
/
扩散
模型
/
语义
分割
:基于
扩散
模型
的标签高效
语义
分割
Label
-efficient ...
在本文中,我们证明了
扩散
模型
也可以作为
语义
分割
的工具,特别是在标签数据稀缺的情况下。特别是,对于几个预训练的
扩散
模型
,我...
赞
踩
article
线性代数
基础 |
向量
和
矩阵
的
定义与性质_
矩阵
表示
向量
...
向量
是数学中
的
一个基本概念,它
表示
在空间中具有大小
和
方向
的
量。
向量
可以用箭头来
表示
,箭头
的
长度
表示
向量
的
大小(模),箭头...
赞
踩
article
数学
建模
常用的十大
算法
锦集_
数学
建模
网格
算法
...
数学
建模
常用的十大
算法
锦集1、蒙特卡罗
算法
(该
算法
又称随机性模拟
算法
,是通过计算机仿真来解决问题的
算法
,同时可以通过模拟...
赞
踩
article
小梅哥
Xilinx
FPGA
学习笔记18——专用
时钟
电路
PLL
与
时钟
向导
IP
_
时钟
电路
常用ip...
IP
Intellectual Property)即知识产权,简言而之,
IP
即
电路
功能模块。
IP
核在数字
电路
中常用于比较复...
赞
踩
article
学习笔记
X86
/ARM
架构
-
Kubernetes
集群
搭建_
arm
架构
安装
kubernetes
集群
...
Kubernetes
是一个开源的容器编排和管理平台,用于自动化应用程序的部署、扩展和管理、管理容器化的工作负载和服...
赞
踩
article
【
Android
】NDK
中
log
输出
方法_
ndk
log
...
1:在编译so文件的c或cpp文件之前
中
加入以下代码,就可以在android
中
的
log
显示日志内容 #include ...
赞
踩
article
Acwing
8
2
6. 单
链
表
_实现
一个
单
链
表
,
链
表
初始为空
,
支持三种
操作
: (1) 向
链
表
头
插入
...
实现
一个
单
链
表
,
链
表
初始为空,支持三种
操作
:(1) 向
链
表
头
插入
一个
数;(
2
) 删除第k个
插入
的数后面的数;(3) 在第...
赞
踩
article
【
openlayers
结合
echarts
图表和
地图
】
VUE2
demo
直接运行...
【代码】【
openlayers
结合
echarts
图表和
地图
】
VUE2
。_
openlayers
结合
openlayers
结合
...
赞
踩
article
Python
爬虫(
selenium
)从网站获取信息并存入
数据库
(
mysql
)_
python
爬取网页...
为了更直观的查看
数据库
里面各种信息,建议安装这个软件,连接也很简单,点新建连接,就会弹出如下页面,连接名随意,其他都不用...
赞
踩
article
第六届
数字
中国
建设
峰会发布“十大硬核科技”,
OceanBase
4.0
(小鱼)入选_
第六届
数字
中国
建...
4月27日 ,
第六届
数字
中国
建设
峰会发布“十大硬核科技”,蚂蚁集团自主研发的原生分布式数据库
OceanBase
4.0
(...
赞
踩
相关标签
rabbitmq
spring boot
微服务
分布式
linux
transformer
计算机视觉
深度学习
华为od
c语言
java
javascript
python
排序算法
算法
数据结构
数据分析
leetcode
字符串
人工智能
生成对抗网络
迁移学习