一、表达式
1.定义:表达式是由一个或者多个运算符连接变量或常量组成的式子
2. 特点:表达式一定有值、类型
3. 混合运算数据类型:
① C语言中相同数据类型运算得到的结果就为该数据类型
② C语言中不同数据类型运算需要将数据类型转换为同一种类型再进行运算和处理;不同类型运算时需要将低精度类型转换为高精度类型
③转换标准:
- 浮点类型精度 > 整数类型精度
- 相同类型所占空间越大精度范围越高
- 整数类型无符号精度 > 有符号精度
- char和short进行数据运算和数据处理时会统一转换为int类型
- float进行数据运算和数据处理时会通义转换为double类型
这个例子可以清晰理解一下。
解读:计算结果虽然小于0,但是无符号和有符号类型相遇时。会变成无符号类型,其计算结果的负号(-5)按照无符号的存储方式,其储存结果为大于0的二进制补码加符号位。所以输出结果为YES。
二、运算符
1.算法运算符:
注意事项:
① 取余(%):不能使用浮点数。
② 除法(/):10/4 是int类型的相除,结果只能是整数没有小数。若想要小数可:10/4.0 ;若两个计算对象是int变量可:num1/(float)num2 →强制转换,只能用一次。
如下所示:
强制转换例子:
③ i++:赋值时先用后加,i都会加1。
++i:赋值时先加再用,i都会加1。
④小试牛刀:
设置任意变量,计算圆的周长的面积。
2.赋值运算符:
= += -= *= /= %=
①能够放在等号右边的值称为右值,右值可以是变量、常量、表达式。
②能够放在等号左边的值称为左值,左值只能是变量,不能为常量或者表达式
③赋值运算符左右两端类型不一致,处理方式如下:
- 浮点数类型赋值给整数类型,会舍弃小数点后的精度
- 整数类型赋值给浮点数类型,小数点扩00000
- 若左右两边空间大小一致,则直接完成空间拷贝
- 若小数据放入大空间,需要补位,有符号数补符号位,无符号补0
- 若大数据放入小空间,直接截取数据低位处,最左边为符号位(0代表正数可直接得数值为多少,1代表负数需要反向推导才可得数值为多少)。
3.逗号运算符:
从左到右依次执行,将最后一部分逗号表达式的结果作为整体的结果。
4.sizeof运算符:
获得变量或数据类型在内存中所占的字节。
5.运算优先级:
具体优先级如图所示:
规则总结:括号 > 单目 > 双目 > 三目 > 赋值 > 逗号