C++语言程序设计

如果数据是从较高类型转换成较低类型，这意味着类型的精度或表示范围降低，可能造成数据丢失。下面两个表分别列出了有符号数之间和无符号数之间的转换：
1． 有符号数的转换
有符号数的转换中，如果从较低类型转换到较高类型，将进行符号扩展，例如一个值从short int（16位）转换到long类型，如果这个数是正数，则最高位为0，从16位扩展到32位时，扩展的高16位用0填充，即将符号位0进行扩展，这样扩展后的32位整数和原来的整数值是一样的。如果该数为负数，则最高位为1，从16位扩展到32位时，扩展的高16位用1填充，即将符号位1进行扩展，这样扩展后的32位整数和原来的整数值是也是一样的。
如果从较高类型转换到较低类型，将抛弃高位，直接将低位复制过来，例如一个值从int（假定为32位）转换到short int型（16位），系统将抛弃高16位，取低16位的值作为转换后的值。
浮点数类型和整数类型转换比较复杂，因为它们的内部表示方式不同，转换时它们不是简单的符号位扩展或者高位截断，它们首先需要进行内部表示方式的转换。左表是有符号数类型转换的所有情况。