background image

C

 

语言中强制类型转换总结

1.

 

自动类型转换

 

● 字符型变量的值实质上是一个 8 位的整数值,因此取值范围一般是-128~127,char 型
变量也可以加修饰符 unsigned,则 unsigned char 型变量的取值范围是 0~255(有些机器把
char 型当做 unsighed char

 

型对待, 取值范围总是 0~255)  

 

● 如果一个运算符两边的运算数类型不同,先要将其转换为相同的类型,即较低类型转

 

换为较高类型,然后再参加运算,转换规则如下图所示。
double ←── float 

 

 


long 

 


unsigned 

 


int ←── char,short 

 

 

● 图中横向箭头表示必须的转换,如两个 float 型数参加运算,虽然它们类型相同,但仍
要先转成 double 型再进行运算,结果亦为 double

 

型。 纵向箭头表示当运算符两边的运算

数为不同类型时的转换,如一个 long 型数据与一个 int 型数据一起运算,需要先将 int 型
数据转换为 long

 

型, 然后两者再进行运算,结果为 long 型。所有这些转换都是由系统自

 

动进行的, 使用时你只需从中了解结果的类型即可。这些转换可以说是自动的,但然,C

 

语言也提供了以显式的形式强制转换类型的机制。

 

 

● 当较低类型的数据转换为较高类型时,一般只是形式上有所改变, 而不影响数据的实

 

 

质内容, 而较高类型的数据转换为较低类型时则可能有些数据丢失。

2.

 

赋值中的类型转换

 

当赋值运算符两边的运算对象类型不同时,将要发生类型转换, 转换的规则是:把赋值

 

运算符右侧表达式的类型转换为左侧变量的类型。具体的转换如下:
(1) 

  

浮点型与整型

 

● 将浮点数(单双精度)

 

 

转换为整数时,将舍弃浮点数的小数部分, 只保留整数部分。

 

将整型值赋给浮点型变量,数值不变,只将形式改为浮点形式, 即小数点后带若干个 0。

 

注意:赋值时的类型转换实际上是强制的。
(2) 

  

单、双精度浮点型

 

● 由于 C 语言中的浮点值总是用双精度表示的,所以 float 型数据只是在尾部加 0 延长为