C语言(3)

根据需要的数字不同可以把操作符分为
三种:弹幕操作符,双目操作符和三目操作符
加减乘除用+,-,*,/四个操作符表示
如果参与乘除法计算的两个数字都是整数则计算结果只保留整数
%用来表示取余操作
15%6结果是3(15可以分解成12+3,12是6的整数倍,3是一个比6小的数字)

赋值操作符用=表示
赋值语句本身也可以作为数字使用,这个数字就是赋值以后存储区里的数字
可以在一个表达式里多次使用赋值操作符,这个时候优先计算右边的赋值操作符
绝大多数双目操作符可以和赋值操作符合并成为符合赋值操作符(列如+=,/=等)
这种操作符会把双目操作符的计算结果记录到存储区里
这种操作符通常在表达式里最后计算

自增操作符(++)和自减操作符(–)都是单目操作符
它们只能和存储区一起使用
自增操作符可以把存储区的内容加一
自减操作符可以把存储区的内容减一

它们各有两种使用方法:
前操作(操作符写在存储区的前面)
后操作(操作符写在存储区的后面)
前操作表达式作为数字使用的时候是修改后面的数字
后操作表达式作为数字使用的时候是修改前面的数字

逻辑表达式的结果是布尔值
逻辑操作符用来编写逻辑表达式

!是一个单目逻辑操作符
它可以根据一个布尔值计算出另一个布尔值
这两个布尔值一定不同
这个操作叫做求反操作

双目逻辑操作符包括==(等于),!=(不等于),>(大于),<(小于),>=(大于等于)和<=(小于等于)
一个逻辑表达式里最多包含一个双目录操作符
与(&&)和或(||)可以用来连接两个逻辑表达式
只要两个表达式里有一个的结果是真用或(||)合并以后结果就是真
只要两个表达式里有一个的结果是假用与(&&)合并以后结果就是假

与(&&)和或(||)都具有短路特征
如果前面表达式的结果可以决定合并后表达式的结果就忽略后面的表达式
位操作符用来操作二进制数位的内容

~是一个单目位操作符
这个操作符可以根据一个数字计算出另一个数字,这数字所有二进制数位的内容都不一样
这个操作叫按位求返
char 0x93 1001 0011
char~0x93 0110 1100

双目位操作符包括按位与(&),按位或(|)和按位异或(^
)它们都是把两个数字对应二进制数位的内容相互计算

按位与(&)可以把对应数位的内容做与计算
只要一个数位内容是0则与计算以后结果就是0
& 3 0000 0011
5 0000 0101
0000 0001

任何数位内容和0做按位与结果一定是0
任何数位内容和1做按位与结果保持不变

可以利用按位与从一个数字里单独获得某些数位的内容
0010 1011 & 0000 0001 结果是1
(利用按位与是用来判断一个数字是否是奇数)

可以利用按位与把一个数字的某些数位内容设置成0
0110 1011 & 1101 1111 结果是 0100 1011
按位或(|)可以把对应数位的内容做或计算
只要一个数位的内容是1则或计算以后结果就是1

 3     0000 0011

| 5 0000 0101
0000 0111

任何数位内容和0做按位或保持不变
任何数位内容和1做按位或结果是1

可以利用按位或把某些数位内容设置成1
0110 1011 | 0000 0100 结果是0110 1111

按位异或(^)可以把对应数位的内容做异或计算
如果两个数位内容一样则异或以后结果是0,否则结果是1

3 0000 0011
^ 5 0000 0101
0000 0110

任何数位内容和0做按位异或结果保持不变
任何数位内容和1做按位异或结果变成相反数

可以利用按位异或把某些数位内容变成相反数
0110 1001 ^ 0000 1111 结果是 0110 0110

移位操作可以把一个数字的所有二进制
数位内容统一向左或向右移动n个位置
********
00000011
00000011 向左移动2步
00001100 多余的数位内容被丢掉
         空的数位里填上新数字
<<表示向左移位 >>表示向右移位
它们都是双目位操作符
左边的数字将要进行移位操作
右边的数字是移动的位数
3 << 2 对3进行向左移动2位的操作

向左移位后右边空出来的数位里固定填充0

无符号类型数字右移时左边空出来的数位里填充0
(无符号类型)
1000 0101 >> 2 0010 0001

有符号类型数字右移时左边空出来的数位里填充符号位的内容
(有符号类型)
1000 0101 >> 2 1110 0001

向左移动n位通常相当于乘以2的n次方
向右移动n位通常相当于除以2的n次方

位操作符不会修改存储区内容

&也可以作为单目操作符使用
它可以用来计算一个存储区的地址
(类似从电话号码本里查找某个人的电话号码)
可以用%p做占位符显示地址数据
我们的计算机里所有地址数据都是由32个二进制数位构成的

*也可以做单目操作符使用
它可以根据地址找到一个存储区
(类似根据电话号码拨打电话)

三目操作符可以从两种计算规则里选择一个
(类似于工具箱,可以从多个工具里选择)
三目操作符格式如下
布尔值 ? 表达式一 : 表达式二
布尔值为真就用表达式一进行计算
布尔值为假就用表达式二进行计算

计算绝对值的表格


  • 非负数 * 本身 *


  • 负数 * 相反数*


如果表达式里不同数字的类型不同
就必须首先转换成同一个类型
然后再进行计算
这个转换过程叫隐式类型转换

隐式类型转换过程中必须把占地小的类型
转换成占地大的类型

如果既有整数类型数字也有单精度浮点
类型数字,隐式类型转换时就把整数
类型转换成单精度浮点类型
如果既有无符号类型数字也有有符号类型
数字,隐式类型转换的时候就把有
符号类型转换成无符号类型

可以在程序里临时给数字指定一个类型
这叫做强制类型转换
强制类型转换格式如下
(char)300 把300当做字符类型数字使用
强制类型转换有可能导致数据内容丢失

类型转换不会修改存储区内容

谢谢

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值