强制类型转换原理

来源:互联网 发布:淘宝的技术水平 编辑:程序博客网 时间:2024/06/05 06:55
作者:pansz
链接:https://www.zhihu.com/question/20482511/answer/15262336
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

所谓强制转换,其实也分不同的类型。一个强制转换语句,在不同的场合下,有不同的含义。大体上来看,在 C 语言里面,强制类型转换有两种含义:

1,将一个数据,复制为另外一个数据类型,并且使用新类型的数据,此时可以认为新类型的数据,在内存结构方面与原有数据没有任何关系,这是实实在在的发生了转换,而且执行这个转换相关的代码是编译器生成的。例如:
char c = 'c';
int i = (int) c;
在上面的例子中,字符 c 被转化成了 int,两者是完全不同的数据,其内存占用的长度也完全不同。
2,将一个数据,当作另外一个数据类型使用,让编译器认为这就是另外一个数据类型,此时数据没有发生任何转换,在计算机的角度没有任何事情发生,也不为这个转换生成任何代码,只是编译器认为这个语句合法了。例如:
long l = 0x10000000L;
volatile void *p = (void *) l;

在这句话中,变量 l 被『直接视为』指针 p,从内存数据的角度没有发生任何转换,这个转换只是让编译器认为这个赋值合法而已。
在 C++ 里面,通常第二种类型被称为 reinterpret_cast,而第一种类型就直接使用显式类型转换实现。

在 Java 里面,通常也会根据上下文,出现 1 和 2 的两种不同情况。
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 为康 自康 又康 都康 保多康 替康 经康 安 康 以康 奥地康 康+ 金顺银康 卫婴康 康到 是有康 康 网 不康 康为 康一 康之 康都 康中 邦达利康 康那 彼夫康 当归功效 当归的功效 当归图片 当归四逆汤 当归芍药散 野当归 孕妇吃当归 当归煮鸡蛋 孕妇当归 当归鸡蛋 当归补血汤 黄芪当归 当归鸡汤 当归补血 当归黄芪 当归炖鸡