强制转换

[复制链接]
1075|11
 楼主| liliang9554 发表于 2014-11-7 12:39 | 显示全部楼层 |阅读模式
往内存某地址比如0X12FF7C写数据0X100

int*p = (int*)0x12ff7c;
*p=0x100;

如果写成
int*p;
p=0x12ff7c;
*p=0x100;

即p= (int*)0x12ff7c;这句的强制转换不强制转换了会有什么结果呢?
wyjie 发表于 2014-11-7 12:40 | 显示全部楼层
避免警告或错误,取决于具体的编译器
jlyuan 发表于 2014-11-7 12:42 | 显示全部楼层
这个是取决于编译器的,一般情况下编译器都默认为int型,你不转换也没关系,编译器会帮你强制转换。
yszong 发表于 2014-11-7 12:42 | 显示全部楼层
最好进行强制转换,是个好习惯。
heweibig 发表于 2014-11-7 12:48 | 显示全部楼层
省个warning
wuhany 发表于 2014-11-7 12:49 | 显示全部楼层
强制转换是为了明确的通知编译器, 以免编译器迷糊。例如, 一个 0x12ff7c 可以是一个 32-bit 的 int, 也可以被认为是 64-bit 的long, 或者是一个 float, 当然也可以是一个常数地址。但是一般不会把0x12ff7c直接作为float 或者是常数地址, 所以做编译器的人会认为这很可能是一个笔误, 给出一个 warning 是负责任的表现。
zhenykun 发表于 2014-11-7 12:51 | 显示全部楼层
是的,因此, 用强制转换明确的通知编译器:这不是一个笔误, 是我特意要这么做的, 我清楚地知道后果。
dengdc 发表于 2014-11-7 12:52 | 显示全部楼层
int*p;
p=0x12ff7c;
*p=0x100;

即p= (int*)0x12ff7c;这句的强制转换不强制转换了会有什么结果呢?

我认为p=0x12ff7c;这一句编译都通不过啊,在语法上就是错误的,将int类型的数据赋值给指针类型的数据,在语法上是错误的
heweibig 发表于 2014-11-7 12:56 | 显示全部楼层
强制转换优点   第一  告诉编译器你想要的数据类型   
heweibig 发表于 2014-11-7 12:56 | 显示全部楼层
第二   避免因为编译器默认类型出错出错   第三节省时间   提高程序执行速率
 楼主| liliang9554 发表于 2014-11-7 13:01 | 显示全部楼层
OK,知道了
 楼主| liliang9554 发表于 2014-11-7 13:02 | 显示全部楼层
那就先结贴了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

950

主题

11568

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部