当前位置:网站首页>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
逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。

虽然逗号表达式是算最后一个表达式的值,但前面的表达式也得算,因为,前面的表达式,可能会使变量的值改变
- 算术转换
如果某个操作符的各个操作数属于不同的类型,那么除非其中一个操作数的转换为另一个操作数的类
型,否则操作就无法进行。下面的层次体系称为寻常算术转换。
边栏推荐
猜你喜欢
![[Node implements data encryption]](/img/8b/f9ff44c39fc9e80b2f2d2626a74076.png)
[Node implements data encryption]

flyway的快速入门教程

推荐系统:评估指标【离线评估指标:RMSE(均方根误差)、AUC、准确率、召回率、F1】【在线评估:A/B测试】【一般要求响应时间<0.5s】

【回归预测-CNN预测】基于卷积神经网络CNN实现数据回归预测附matlab代码

MySQL_关于JSON数据的查询

Flex布局详解

6.3有定型性 第七章

Common Expression Recognition Based on Face (1) - Basic Knowledge of Deep Learning

MySql 创建索引

Weak Banks to data conversion ability?Matt software help solve bank dilemma
随机推荐
Flex布局详解
canvas基础讲解加示例
【视频】极值理论EVT与R语言应用:GPD模型火灾损失分布分析
英文字母间隔突然增大(全角与半角转换)
时间复杂度与空间复杂度
MySQL 视图(详解)
365天挑战LeetCode1000题——Day 044 按公因数计算最大组件大小 并查集
Recommendation System - Sorting Layer - Model (1): Embedding + MLP (Multilayer Perceptron) Model [Deep Crossing Model: Classic Embedding + MLP Model Structure]
MySql 创建索引
MySQL8重置root账户密码图文教程
WPS怎么独立窗口显示?wps单独窗口显示怎么操作?
无法正常访问服务器
明解C语言第七章习题
MySQL mass production of data
[NISACTF 2022]下
MySQL的Replace用法详解
5分钟搞懂MySQL - 行转列
Day31 LeetCode
PHP低代码开发平台 V5.0.7新版发布
4年测试经验去面试10分钟就被赶出来了,面试官说我还不如应届生?都这么卷吗...