C语言No.8

操作符和表达式

本章重点:
1 、操作符介绍
2 、表达式求值
1 )操作符
1. 算术操作符
+ - * / %
除了 % 操作符之外,其它的几个操作符可以作用于整数和浮点数
对于 / 操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法
% 操作符的两个操作数必须为整数,返回值为整除之后的余数
2. 移位操作符
移动的是二进制,数据在内存中以补码的形式进行保存。
正整数的原码、反码、补码相同。
负数原码的首位是1,反码在原码基础上,符号位不变,其余位取反,补码在反码基础上加一。
<< 左移操作符
移位规则:左边抛弃,右边补 0
<< 相当于*2
>> 右移操作符
右移运算分两种:
1>逻辑移位:右边丢弃,左边用0填充
2> 算术移位:右边丢弃,左边补符号位(相当于/2)
对于移位运算符,不要移动负数位,这个是标准未定义的。
3. 位操作符
& 按位与 | 按位或
^ 按位异或
Tips :操作数必须是整数。
2 )表达式求值
表达式求值的顺序一部分是由操作符的优先级和结合性决定的。
有些表达式的操作数在求值的过程中可能需要转换为其他类型。
隐式类型转换
C 的整型算术运算总是至少以缺省整型类型的精度来进行的。为了获得这个精度,表达式中的字符和 short 操 作数在使用之前被转换为普通整型,这种转换称为整型提升
表达式中可以使用整数的地方,就可以使用枚举类型,或有符号或无符号的字符、短整 数、整数位域。如果一个int 可以表示上述类型,则该值被转化为 int 类型的值;否则,该值被转化为 unsigned int类型的值。这一过程被称作 integral promotion
整型提升的意义:
表达式的整型运算要在 CPU 的相应运算器件内执行, CPU 内整型运算器 (ALU) 的操作数的字节长度一般就是 int 的字 节长度,同时也是CPU 的通用寄存器的长度。
因此,即使两个 char 类型的相加,在 CPU 执行时实际上也要先转换为 CPU 内整型操作数的标准长度。
通用 CPU general-purpose CPU )是难以直接实现两个 8 比特字节直接相加运算(虽然机器指令中可能有这种字 节相加指令)。所以,表达式中各种长度可能小于int 长度的整型值,都必须先转换为 int unsigned int ,然后 才能送入CPU 去执行运算。
操作符的优先级:
在了解了操作符的优先级之后,有些人就可能会突发奇想,写出一些稀奇古怪的表达式,写出来不仅是坑自 己,也是坑队友!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值