打印

这个括号多余吗?

[复制链接]
1537|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gszzjf|  楼主 | 2009-6-2 15:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面这段代码中为什么在给指针赋值的时候还要加上强制类型转换
int *ptr;
ptr = (int *)0x67a9;
*ptr = 0xaa55;
而不直接写成
 int *ptr;   
 ptr = 0x67a9; 
 *ptr = 0xaa55;
这两种写法有什么区别吗?(我在keil里面编译过都可以通过的)

相关帖子

沙发
computer00| | 2009-6-2 16:00 | 只看该作者

keil检查并不严格,有些编译器就不行了,例如VC

使用特权

评论回复
板凳
gszzjf|  楼主 | 2009-6-2 16:03 | 只看该作者

第二段代码是这样的

第二段代码是这样的
int *ptr;
ptr = 0x67a9;
*ptr = 0xaa55;

使用特权

评论回复
地板
gszzjf|  楼主 | 2009-6-2 16:08 | 只看该作者

谢了,vc中果然通不过

不过这种类似的问题该怎么避免呢?

使用特权

评论回复
5
computer00| | 2009-6-2 16:26 | 只看该作者

不同类型的转换,最好还是直接写上,不要用隐含转换,危

使用特权

评论回复
6
gszzjf|  楼主 | 2009-9-17 17:01 | 只看该作者
:victory: 谢谢了

使用特权

评论回复
7
afei9527| | 2009-9-17 17:41 | 只看该作者
学习

使用特权

评论回复
8
sjl2006| | 2009-9-17 20:52 | 只看该作者
功能上二者等价,但不同类型之间最好不要用缺省转换,C程序员要知道自己在做什么,大量教训出在这里

使用特权

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

本版积分规则

7

主题

92

帖子

0

粉丝