进行数据类型转换时,需要注意以下几点:
- 强制类型转换获得的是一个所需类型的中间量,原来表达式的类型并不发生变化。例如(double)a只是将变量a的值转换成一个double型的中间量,但其数据类型并未转换为double型
- 表达式计算过程中,参与计算的常量或变量的类型自动转换是临时的,它仅产生一个临时的、类型不同的数据参与运算,常量或变量的原类型和值均不改变
- 运算结果赋予变量的类型转换过程中,无论是自动的还是强制的,当把数据长度较长的结果存入数据长度较短的变量时,将截去超出的部分,有可能造成错误
- 数据类型转换将占用系统时间,过多的转换将降低程序的运行效率,所以除了必要的数据类型转换外,应尽量选择好数据类型,避免不必要的转换
例3-39:赋值时类型转换可能出现错误的例子
设
int a;
long b=65536;
其中,变量b占用4字节,将b的值赋予变量a时,按照“就左不就右”的规则,将变量b的4字节中低16位数据(后面的2字节)赋值给变量a。
00000000 | 00000001 | 00000000 | 00000000 |
00000000 | 00000000 |