码迷,mamicode.com
首页 > 编程语言 > 详细

C++中类型转换的问题

时间:2015-08-06 00:06:09      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:

1.从最简单的说起:

首先一个int型变量和一个char型变量之间的转换,分为隐式转换和显示转换。

例如:int i; char c; i = c;

即为隐式转换,编译器隐式的将char型变量转换成了int型。

例如:int i; char c; i = (int)c;

极为显示转换,显示的指明了将要转换成的类型。

不论显示转换还是隐式转换都存在风险,将大内存模型(如int)转换到小内存模型(如char)存在截断的风险。

然而由小内存模型转换到大内存模型则是在高位进行补位(正数补0,负数补1)。

2.指针的类型转换

例如:a = 1;int *p = &a;float *pf = (float*)p;

p和pf的值都是&a,但是*p是将&a地址中的值按照int型变量进行解释,而*p1则是将&a地址中的值按照float型变量进行解释。

例如:int a;float *p;p = &a;

编译器会报错,指针类型不匹配。说明指针之间可以进行一定类型的转换,但是指针有特定的类型,不能将一种类型的指针赋值给另一种类型的指针,除非加上强制转换。

例如:int a;float *p;p = (float*)&a;

这样是可以的。

C++中类型转换的问题

标签:

原文地址:http://www.cnblogs.com/geowu/p/4705948.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!