打印

强制转换不强制转换了

[复制链接]
684|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chenho|  楼主 | 2016-1-10 22:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
往内存某地址比如0X12FF7C写数据0X100

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

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

即p= (int*)0x12ff7c;这句的强制转换不强制转换了会有什么结果呢?
沙发
gongche| | 2016-1-10 22:40 | 只看该作者

避免警告或错误,取决于具体的编译器

使用特权

评论回复
板凳
huanghuac| | 2016-1-10 22:41 | 只看该作者
这个是取决于编译器的,一般情况下编译器都默认为int型,你不转换也没关系,编译器会帮你强制转换。

使用特权

评论回复
地板
冰清玉洁| | 2016-1-10 22:43 | 只看该作者
最好进行强制转换,是个好习惯。

使用特权

评论回复
5
wenfen| | 2016-1-10 22:45 | 只看该作者
省个warning

使用特权

评论回复
6
zhuhuis| | 2016-1-10 22:47 | 只看该作者
强制转换是为了明确的通知编译器, 以免编译器迷糊。例如, 一个 0x12ff7c 可以是一个 32-bit 的 int, 也可以被认为是 64-bit 的long, 或者是一个 float, 当然也可以是一个常数地址。但是一般不会把0x12ff7c直接作为float 或者是常数地址, 所以做编译器的人会认为这很可能是一个笔误, 给出一个 warning 是负责任的表现。

使用特权

评论回复
7
chenho|  楼主 | 2016-1-10 22:48 | 只看该作者

是的,因此, 用强制转换明确的通知编译器:这不是一个笔误, 是我特意要这么做的, 我清楚地知道后果。

使用特权

评论回复
8
tian111| | 2016-1-10 22:49 | 只看该作者
nt*p;
p=0x12ff7c;
*p=0x100;

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

我认为p=0x12ff7c;这一句编译都通不过啊,在语法上就是错误的,将int类型的数据赋值给指针类型的数据,在语法上是错误的

使用特权

评论回复
9
chenho|  楼主 | 2016-1-10 22:50 | 只看该作者
哦。知道了

使用特权

评论回复
10
chenho|  楼主 | 2016-1-10 22:51 | 只看该作者
那就先结贴了
晚安各位亲们

使用特权

评论回复
11
dml19890601| | 2016-1-11 10:52 | 只看该作者
台湾笙泉单片机总代理,杜先生,电话:15295658706   QQ:3166720948

使用特权

评论回复
12
sourceInsight| | 2016-1-12 11:58 | 只看该作者
使用强制转换类型啊,都这样写的。

使用特权

评论回复
13
handleMessage| | 2016-1-12 14:13 | 只看该作者
p= (int*)0x12ff7c;这句貌似没啥问题额,看不懂。。。

使用特权

评论回复
14
feiqi1| | 2016-1-15 14:59 | 只看该作者
(ฅ>ω<*ฅ)(ฅ>ω<*ฅ),,强制转换是为了明确的通知编译器, 以免编译器迷糊。

使用特权

评论回复
15
zhouhuanの| | 2016-1-25 21:46 | 只看该作者
这种强制转换其实可以不用指针来做,。。

使用特权

评论回复
16
robter| | 2016-1-26 07:51 | 只看该作者
编译器的问题

使用特权

评论回复
17
xia00| | 2016-2-6 11:07 | 只看该作者
具体环境要看具体编译器,环境还是很重要的。

使用特权

评论回复
18
CallReceiver| | 2016-2-6 14:56 | 只看该作者
这样会有warning啊,最好不要这样强制转换吧!!!

使用特权

评论回复
19
handleMessage| | 2016-2-6 15:18 | 只看该作者
这个和编译器能有多大关系?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

748

主题

9853

帖子

5

粉丝