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的值及类型都未改变。而是各自产生一个临时变量,用这两个临时变量的值进行运算

 

     

 

posted @ 2019-01-10 11:49  long_ago  阅读(769)  评论(0编辑  收藏  举报