C++基础知识(三)--数据类型转换--混合运算类型转换--赋值类型转换--强制类型转换
系统自动类型转换:混合运算的类型转换,赋值类型转换,强制类型转换
一、混合运算的类型转换规则
1.运算过程中,当某个二元运算符两边的操作数类型不同但属于类型相容时,系统先将精度低的操作数变换到与另一个操作数精度相同,然后再进行运算。
混合运算类型转换规则:
- 字符可以作为整数参与数值运算,整数值为其ASCII码
- 操作数为字符或短整形时,系统自动转换成整形。
- 操作数为实型时,系统自动转换成双精度型。
- 其余情况,当两数操作数类型不同时,将精度低(或表示范围小的)的操作数的数据类型变换到与另一操作数类型相同再进行运算
2.example
1 char c1,c2; 2 int i1,i2; 3 float x1,x2; 4 x2=c1*i1+c1*x1+c1*c2; 5 6 转换过程: c1转换成整型,完成c1*i1,结果表示为t1; 7 c1与x1均转换成双精度型,完成c1*x1,结果表示为t2; 8 c1与c2均转换成整型,完成c1*c2,结果表示为t3; 9 然后:将t1转换成双精度型,完成t1+t2,结果表示为t4; 10 再将t3转换成双精度型,完成t3+t4, 11 最后:结果转换成单精度型赋值给x2
二、赋值类型转换
1.系统自动进行类型转换规则:
- 实型数赋值给整型变量:取整,注意溢出
- 整型数赋值给实型变量:先转换为实型数
- 字符型数赋值给整型变量:ASCII码为依据,分为两种情况,符号位是0/1时不同。
- 绝对值较大的数赋值给表达范围较小的数据类型时,注意溢出
在赋值运算中,当左值与右值类型不一致时,系统将按照左值的类型,自动进行强制转换。
三、强制类型转换
1.强制类型转换运算符格式
(type)表达式
2.作用:将表达式强制转换成type类型,但表达式的值及其类型不变
3.注意:::强制类型转换不改变表达式本身的值类型,而是产生一个临时变量,用来暂存转换后的值,该临时变量被引用后即自动释放。
1 int a=6,b=7; 2 float x; 3 x=(float)a/(float)b; 4 执行强制类型转换后,a,b的值及类型都未改变。而是各自产生一个临时变量,用这两个临时变量的值进行运算