C++语言程序设计

类型转换是程序设计过程中经常碰到的，需要把一种类型的数据转换为另一种类型表示，然后才能一起在表达式中参加运算。
下面先看一看下表中的C++中的类型转换的例子

| 表3-16

例子 | 转换前类型 | 转换后类型 | 结果
(int) 3.5 | 双精度浮点型double | 整型int | 3
(long) -3.5 | 双精度浮点型double | 长整型 long | -4
(double)2 | 整型int | 双精度浮点型double | 2.0
(char)122 | 整型int | 字符型char | '0x7A'
(float) 2 | 整型int | 单精度浮点型 float | 2.0F
(unsigned short)3.5 | 双精度浮点型double | 无符号短整型 unsigned short | 3
int （3.5） | 双精度浮点型double | 整型int | 3

而同学们更需要注意的是当不同类型的数值在一个表达式中混合运算时，C++进行的隐式类型转换。如：

| 例3-6
| double d = 2; // d 的值2.0 int i = 3.5; // i的值3 i = i - d; // 等价于: i = int(double(i) - d) 值为1

其中，表达式i = i - d的变量i与d的类型不同，使得i首先被转换为double型（提升），再与d相加，其结果为一double型数。由于该double型数与赋值语句左边i的类型不匹配，所以在它被赋给i之前，再被转换为int型（下降）。
在显式类型转换中，应该特别注意从较高级别的类型转换为较低级别的类型时，容易引起数据的丢失。如：
(unsigned char) 900
的结果是132。
有时，一个数据经过几次类型变换以后再变换回原来的数据类型就可能不是原来的数值了。如；

| 例3-7
| short ishort = 1000; unsigned char uichar; uichar = ishort; ishort = uichar;

最后的结果是ishort=232，相当于1000%256。在赋值表达式"uichar = ishort;"的执行中，把ishort的值1000进行类型转换（从short 转换为 unsigned char），得到值232。最后表达式"ishort = uichar;"在把232转换为short类型，赋值给变量ishort。