如题。
原理可不一般呀
Have a look at << C++ Primer 3rd >> Page 146
类型转换,我个人认为
就是内存的一次访问大小的转换
由于在计算机中,任何东西都是用0,1 来表示的,所以
所有的数据在本质上是没有区别的,如果非要找出区别的话,
那就是数据的所代表的意义,及相同的数据被表示的格式不同罢了(比如,int 的2就跟double的2的格式不一样)
这个相同性,是类型转换的基础
比如
char a= ;
和
int i=32;
假如二进制表示格式为:
00100000 //a
而i 就有可能表示为:
00000000 00000000 00000000 00100000
也就是说,它们的有效的二进制(00100000)是一样的
而区别仅在于,二者所占的内存空间大小不同
所以,我们可以把两个数据格式一样的类型从这个类型,转换到那个的类型,(一次访问的内存大小的扩展)而保证不出任何差错
比如:
char => short => int
float =>double
但我们无法保证像这样的转换结果是正确的:
int =>char
float=>double
double => int
...
(short)a == (short)255 == FFFF,FFFF = -1(补码)
(unsigned short)a == (unsigned short)255 == FFFF,FFFF = 65535(补码)