当前位置:网站首页>c语言:操作符详解
c语言:操作符详解
2022-07-30 20:20:00 【某某小卢】
- 操作符
- 操作符分类:
算术操作符
移位操作符
位操作符
赋值操作符
单目操作符
关系操作符
逻辑操作符
条件操作符
逗号表达式
下标引用、函数调用和结构成员
- 算术操作符
其中包括+,-,*,/,%
其中比较特殊的%,求余%两边只能是整数。其他的几个浮点数和整数ok。
对于 / 操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法。
- 移位操作符
& //按位与 有0为0,双1为1
| //按位或 有1为1,双0为0
^ //按位异或 相同为0,相异为1
注:他们的操作数必须是整数。
补充一下:这里的运算规则是用二进制的补码来运算的
例:当交换两个数(不使用第三个变量)
- 二进制的原码,补码以及反码
二进制由0和1组成
二进制是这样的。以15为例(32位):
000000000000000000000000001111;这里的四个1分别对应:2的3次方 2的2次方 2的1次方 2的0次方
二进制转换为10进制是这样的:2的3次方*1+ 2的2次方*1+ 2的1次方*1+ 2的0次方*1=15
上面的二进制为二进制的原码。第一位为符号位:0为负,1为正
反码为除了符号位,原码0 1互换,0变1,1变0
补码是反码加1,逢二进一
其中值得注意的是正整数的原反补码都相同
- 移位操作符
左边抛弃、右边补0
>> 右移操作符
分为两种
.逻辑移位
左边用0填充,右边丢弃
2算术移位
左边用原该值的符号位填充,右边丢弃
注:移位操作符的操作数只能是整数。
对于移位运算符,不要移动负数位,这个是标准未定义的
补充一下:这里的运算规则是用二进制的补码来运算的
例:统计二进制中1的个数
例:求两个数二进制中不同位的个数
- 赋值操作符=
这个就是常见的赋值操作符;例如:int i=0;
他有很多复合操作符+=,-=,*=,/=,%=,
他们的运算方法跟+=一样。例如:a+=6 ==== a=a+6
- 单目操作符
其中比较值得注意的是sizeof
这个代码中sizeof(arr)是,sizeof看到访问的是arr整个数组,有int型的大小是4,所以4*10=40
sizeof(arr[10])这里是否越界访问了,其实是没有的,sizeof只是判读是int型,它并没有进去,哪怕是arr[11]也不会越界访问
例:
第一个a是可以的,会打印4,第二个是不可以的,会报错
所以呢,sizeof可以不加括号来访问变量,但不可以不加变量来访问数据类型。
这里为啥呢?
其实是这样的,一般来说,s=2+5=7嘛,但其实
这里会发生截断,sizeof()括号里面的东西不进行计算,sizeof发现了s是short类型的,返回2嘛,然后下面s还是10.
- ~ 对一个数的二进制按位取反
是将每一位按位取反,包括符号位
- i++和++i
++a
先对a进行自增,然后对使用a,也就是表达式的值是a自增之后的值
a++
先对a先使用,再增加
- 关系操作符
= <
两个字符串不能用==来判断是否相等
警告:
在编程的过程中== 和=不小心写错,导致的错误。
例:
答案应该是1 2 3 4
是这样a++先使用a,又因为a=0,所以0&&++b,这样的话++b就没有必要算,直接等于0,同理d++也没有算。
- 逗号表达式
exp1, exp2, exp3, …expN
逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。
虽然逗号表达式是算最后一个表达式的值,但前面的表达式也得算,因为,前面的表达式,可能会使变量的值改变
- 算术转换
如果某个操作符的各个操作数属于不同的类型,那么除非其中一个操作数的转换为另一个操作数的类
型,否则操作就无法进行。下面的层次体系称为寻常算术转换。
边栏推荐
- 推荐系统:概述【架构:用户/物品特征工程---->召回层---->排序层---->测试/评估】【冷启动问题、实时性问题】
- vlookup函数匹配不出来的原因及解决方法
- 都在说软件测试没前途,饱和了?为何每年还会增加40万测试员?
- excel数字下拉递增怎么设置?
- 5分钟搞懂MySQL - 行转列
- halcon——轮廓线
- MySql 创建索引
- el-input can only input integers (including positive numbers, negative numbers, 0) or only integers (including positive numbers, negative numbers, 0) and decimals
- 【PM专用】快速统计团队还有谁没有登记上报信息,快速筛选出属于自己项目组的成员,未完成XXX工作事项的名单
- Mysql8创建用户以及赋权操作
猜你喜欢
随机推荐
银行数据资产转换能力弱?思迈特软件助力解决银行困境
从离线到实时对客,湖仓一体释放全量数据价值
excel数字下拉递增怎么设置?
Swift简介
服务器不稳定因素
Multi-threaded mutex application RAII mechanism
基于人脸的常见表情识别(2)——数据获取与整理
Can't find the distributed lock of Redisson?
WPS没有在任务栏显示所有窗口选项怎么回事?
Common Expression Recognition Based on Face (1) - Basic Knowledge of Deep Learning
明解C语言第六章习题
GateWay实现负载均衡
Recommendation system-model: FNN model (FM+MLP=FNN)
【luogu P8031】Kućice(计算几何)
推荐系统-模型:FNN模型(FM+MLP=FNN)
推荐系统:冷启动问题【用户冷启动、物品冷启动、系统冷启动】
halcon——轮廓线
[Ask] SQL statement to calculate the sum of column 2 by deduplicating column 1?
第04章 逻辑架构【1.MySQL架构篇】【MySQL高级】
Activiti 工作流引擎 详解