一、对字符型数据的补充
转义字符:
表中列出的字符称为“转义字符”,意思是将反斜杠"\"后面的字符转换成另外的意义。
'\r'
实现覆盖式输出时,如果后续输出的内容长度小于之前输出的内容长度,可能会残留之前输出的部分字符。
二、各类数值型数据间的混合运算
1.隐式类型转换
隐式类型转换也称为自动类型转换,是在表达式计算或赋值操作中,由编译器自动进行的类型转换。通常是将精度较低、表示范围较小的数据类型转换为精度较高、表示范围较大的数据类型,以避免数据丢失。
从右向左:必转
从下向上:低精度和高精度 混合运算时,低精度往高精度转换,但不是逐级转换。
2.强制类型转换
强制类型转换也称为显式类型转换,是通过特定的语法,由程序员明确指定的类型转换。它不会影响运算数本身,但可能导致数据丢失或精度降低,使用时需要谨慎,确保转换的结果是符合预期的。
3.算术表达式
用算术运算符和括号将运算对象(也称操作数)连接起来的、符合语法规则的式子,称为算术表达式。运算对象包括常量、变量、函数等,算术表达式都是有值的,有数据类型的。
4.左值、右值
左值:lvalue(left value),能放在“=” 左边的值,可定位的。 (eg: 变量)
右值:只能放在“=”右边的值,不可定位的。 (eg: 常量)
5.贪心法:
从左到右逐个扫描,将字符尽可能多的结合成c语言运算符 。
例:
i+++++i ------> ((i++)++) + i
(一)算术运算
1.算术运算符 : + - * / % ++ --
(1)优先级:
优先级高并不一定决定先运算,但是一定是先结合。不同优先级的运算 混合运算时,高优先级的先结合 。
(2)结合性:
同一优先级的运算混合运算时,按照结合性进行结合。算术运算符的结合方向为“自左而右“。
(3)运算对象的个数:
单目、双目、三目
2. / 运算的应用
(1).如果是两个整型数相除,此时相当于是整除的效果 。
(2).除法运算中,除数不能为 0。
3. % 运算的应用
(1).除数不能为0
(2).求余运算的运算数不能是小数,必须是整数。
(3).最终结果的符号只取决于左操作数的符号。
4.++运算的应用
++ 自增 --- 表示一次增加1
(1)a++ :后置加加 --- 先用(表达式的结果) 后加(让a自增)
(2)++a :前置加加 --- 先加(让a自增) 后用(表达式的结果)
注意:
① a++和++a如果单独使用,效果上没有区别。
②先用后加 或 先加后用,是参与到别的运算中时才发挥作用。
③运算数必须是一个可修改的变量,而不能是常量。
④浮点型数据也可以用++或--运算。
⑤++a的效率高于a++
(二)赋值运算
1.赋值运算符: =
"="就是赋值运算符,它的作用是将一个数据赋给一个变量。
2.不同类型间混合赋值:
(1)高进度 => 低精度
将浮点型数据(包括单、双精度)赋给整型变量时,舍弃浮点数的小数部分 => 精度丢失
(2)低精度 => 高精度
在整型数据中:
①长类型=>短类型 //高位截断
②短类型=>长类型:
无符号短类型 =>长类型 //高位补0
有符号短类型 =>长类型 //符号位扩展 (高位补符号位)
(3) 字符型数据赋给整型变量时:
由于字符只占1个字节,而整型变量占2个字节,因此将字符数据 (8 个二进制位)放到整型变量存储单元的低8位中。
(三)逗号运算
1.逗号运算符(顺序求值运算符): ,
语法: 表达式1,表达式2,表达式3, ...,表达式n
2.逗号运算的过程:
从左到右,挨个运算,逗号运算表达式的结果是整个式子中最后一个表达式运算的结果 。