|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 【高手请进】这个问题好难理解!
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
710
人关注过本帖
标题:
【高手请进】这个问题好难理解!
只看楼主
加入收藏
lntuzjc
等 级:
新手上路
帖 子:54
专家分:0
注 册:2005-3-23
楼主
收藏
问题点数:0 回复次数:9
【高手请进】这个问题好难理解!
有这样一段程序:
void main( void )
{
int i=3,*p1;
float a=1.5,*p2;
p1=&i;p2=&a;
p2=(float *)p1;
printf("%d,%d\n",*p1,*p2);
}
我觉得输出应该是3,3,可是程序输出结果为:3,0。
为什么????????????
搜索更多相关主题的帖子:
理解
这个
问题
2005-03-23 10:07
举报帖子
使用道具
赠送鲜花
agocih
等 级:
新手上路
帖 子:45
专家分:0
注 册:2005-3-17
第
2
楼
收藏
得分:0
说说自己的看法,有不对的地方请高手指正
首先如果要输出3,3 应将上面程序改为 *p2=(float)*p1我想大家可以理解.
在来分析上面程序的强制转化.我们可以理解为p2=(float *)p1是强制的把p2的值改为了p1的值
也是把一个存储整数的地址赋给了一个存储浮点数的指针.
但是注意p2还是浮点型的指针,
因此此时输出p2指向的值当然得到0
2005-03-24 13:24
举报帖子
使用道具
赠送鲜花
coloar123
等 级:
新手上路
帖 子:111
专家分:0
注 册:2005-1-6
第
3
楼
收藏
得分:0
以下是引用
agocih
在2005-3-24 13:24:46的发言:
说说自己的看法,有不对的地方请高手指正 首先如果要输出3,3 应将上面程序改为 *p2=(float)*p1我想大家可以理解. 在来分析上面程序的强制转化.我们可以理解为p2=(float *)p1是强制的把p2的值改为了p1的值 也是把一个存储整数的地址赋给了一个存储浮点数的指针. 但是注意p2还是浮点型的指针, 因此此时输出p2指向的值当然得到0
如果是改成*p2=(float)*p1的話我的機子說出錯,不知道你們的有沒有這一種現象
两耳不闻窗外事,专心只读圣贤书
2005-03-24 13:51
举报帖子
使用道具
赠送鲜花
coloar123
等 级:
新手上路
帖 子:111
专家分:0
注 册:2005-1-6
第
4
楼
收藏
得分:0
两耳不闻窗外事,专心只读圣贤书
2005-03-24 13:52
举报帖子
使用道具
赠送鲜花
agocih
等 级:
新手上路
帖 子:45
专家分:0
注 册:2005-3-17
第
5
楼
收藏
得分:0
不会的,另外下面的输出格式也要注意.
2005-03-24 14:12
举报帖子
使用道具
赠送鲜花
zhtmark
等 级:
新手上路
帖 子:100
专家分:0
注 册:2005-3-25
第
6
楼
收藏
得分:0
p1原来指向两个字节的变量,现在p2存的四个字节的p1的地址.所以p2里前两字节存的是3,后面的不知道.然后3又是小数点后面的位(很小),所以输出整形时,会向零取整.所以是0了.
zhtmark QQ:451361060
2005-03-25 21:55
举报帖子
使用道具
赠送鲜花
神vLinux飘飘
来 自:浙江杭州
等 级:
贵宾
威 望:
91
帖 子:6140
专家分:217
注 册:2004-7-17
第
7
楼
收藏
得分:0
color123
"如果是改成*p2=(float)*p1的話我的機子說出錯,不知道你們的有沒有這一種現象"
把(float*)写成(float)*确实是个很奇怪的现象
zhtmark
已经很接近答案了,几乎可以说就是答案了.不过我不大同意你后面的:
"所以输出整形时,会向零取整."
如果我%f呢?你认为会输出什么?
淘宝杜琨
2005-03-26 01:03
举报帖子
使用道具
赠送鲜花
zhtmark
等 级:
新手上路
帖 子:100
专家分:0
注 册:2005-3-25
第
8
楼
收藏
得分:0
我试了,是"3,0.0000000".我觉得他是个很小的数,所以会这样输出.毕竟两各字节和四个字节差的远.对吧.
神,加我得QQ.聊聊.
zhtmark QQ:451361060
2005-03-27 12:12
举报帖子
使用道具
赠送鲜花
为了c
等 级:
新手上路
帖 子:62
专家分:0
注 册:2005-2-2
第
9
楼
收藏
得分:0
书上只说了“一个指针变量只能指向同一个类型的变量”,并未讲原因!
楼上俩位,别单独聊,写出来吧,我也想知道!!
2005-03-28 00:02
举报帖子
使用道具
赠送鲜花
zhtmark
等 级:
新手上路
帖 子:100
专家分:0
注 册:2005-3-25
第
10
楼
收藏
得分:0
指向的大小是不同的。一旦指向四个,那么输出的就不对了。明白?
zhtmark QQ:451361060
2005-03-28 12:39
举报帖子
使用道具
赠送鲜花
10
1/1页
1
快速回复:
【高手请进】这个问题好难理解!
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.040024 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved