当前位置:网站首页>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
逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。
虽然逗号表达式是算最后一个表达式的值,但前面的表达式也得算,因为,前面的表达式,可能会使变量的值改变
- 算术转换
如果某个操作符的各个操作数属于不同的类型,那么除非其中一个操作数的转换为另一个操作数的类
型,否则操作就无法进行。下面的层次体系称为寻常算术转换。
边栏推荐
- mysqldump导出提示:mysqldump [Warning] Using a password on the command line interface can be insecure
- 一文2500字手把手教你配置Jenkins自动化邮件通知
- These services can't ali interview?Then don't go to, the basic notification, etc
- MySQL 删除表数据,重置自增 id 为 0 的两个方式
- 都在说软件测试没前途,饱和了?为何每年还会增加40万测试员?
- OSS simply upload pictures
- 【考研词汇训练营】Day18 —— amount,max,consider,account,actual,eliminate,letter,significant,embarrass,collapse
- 倾斜文档扫描与字符识别(opencv,坐标变换分析)
- Common Expression Recognition Based on Face (1) - Basic Knowledge of Deep Learning
- PHP低代码开发平台 V5.0.7新版发布
猜你喜欢
网络层协议------IP协议
Android Studio 实现登录注册-源代码 (连接MySql数据库)
推荐系统-排序层-模型(一):Embedding + MLP(多层感知机)模型【Deep Crossing模型:经典的Embedding+MLP模型结构】
canvas基础讲解加示例
@WebServlet注解(Servlet注解)
Recommendation system: evaluation index [offline evaluation index: RMSE (root mean square error), AUC, precision, recall, F1] [online evaluation: A/B test] [generally required response time <0.5s]
flyway的快速入门教程
Recommendation System - Sorting Layer - Model (1): Embedding + MLP (Multilayer Perceptron) Model [Deep Crossing Model: Classic Embedding + MLP Model Structure]
Multi-threaded mutex application RAII mechanism
推荐系统:评估指标【离线评估指标:RMSE(均方根误差)、AUC、准确率、召回率、F1】【在线评估:A/B测试】【一般要求响应时间<0.5s】
随机推荐
【Codeforces思维题】20220728
18.客户端会话技术Cookie
FFmpeg —— 裁剪视频(含音视频),不需编解码(附完整源码)
MySQL的主从复制
推荐系统:评估指标【离线评估指标:RMSE(均方根误差)、AUC、准确率、召回率、F1】【在线评估:A/B测试】【一般要求响应时间<0.5s】
推荐系统-模型:FNN模型(FM+MLP=FNN)
并发与并行的区别
MySQL 多表关联一对多查询实现取最新一条数据
MySQL (2)
PPT如何开启演讲者模式?PPT开启演讲者模式的方法
canvas基础讲解加示例
vlookup函数匹配不出来只显示公式的解决方法
Recommendation System - Sorting Layer: Sorting Layer Architecture [User and Item Feature Processing Steps]
历史上的今天:Win10 七周年;微软和雅虎的搜索协议;微软发行 NT 4.0
Android Studio 实现登录注册-源代码 (连接MySql数据库)
明解C语言第五章习题
【PM专用】快速统计团队还有谁没有登记上报信息,快速筛选出属于自己项目组的成员,未完成XXX工作事项的名单
HMS Core音频编辑服务音源分离与空间音频渲染,助力快速进入3D音频的世界
bebel系列- 插件开发
Common Expression Recognition Based on Face (1) - Basic Knowledge of Deep Learning