|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 谁能解释这个???
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
1372
人关注过本帖
标题:
谁能解释这个???
只看楼主
加入收藏
lntuzjc
等 级:
新手上路
帖 子:54
专家分:0
注 册:2005-3-23
楼主
收藏
问题点数:0 回复次数:21
谁能解释这个???
有这样一段程序:
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 14:02
举报帖子
使用道具
赠送鲜花
coloar123
等 级:
新手上路
帖 子:111
专家分:0
注 册:2005-1-6
第
2
楼
收藏
得分:0
這個是類型強制轉換p2=(float *)p1;所產生的數據丟失和變動
两耳不闻窗外事,专心只读圣贤书
2005-03-23 14:21
举报帖子
使用道具
赠送鲜花
coloar123
等 级:
新手上路
帖 子:111
专家分:0
注 册:2005-1-6
第
3
楼
收藏
得分:0
比如
#include <stdio.h>
void main( void )
{
int i=3,*p1;
float a=1.5,*p2;
p1=&i;p2=&a;
printf("%d,%d\n",*p1,*p2);
}
它所輸出的*p2就變成0
两耳不闻窗外事,专心只读圣贤书
2005-03-23 14:25
举报帖子
使用道具
赠送鲜花
lntuzjc
等 级:
新手上路
帖 子:54
专家分:0
注 册:2005-3-23
第
4
楼
收藏
得分:0
有问题啊!
你举的例子好像与我的那个不太一样。
你的例子中,是把float型的数,按照整数格式输出,当然就是0了!
可我那个问题是:p1,p2指向的内存空间是一样的,那么,取出来的值不也应该一样吗?
_____________________________________________________________________________
比如
#include <stdio.h>
void main( void )
{
int i=3,*p1;
float a=1.5,*p2;
p1=&i;p2=&a;
printf("%d,%d\n",*p1,*p2);
}
它所輸出的*p2就變成0
2005-03-23 14:30
举报帖子
使用道具
赠送鲜花
coloar123
等 级:
新手上路
帖 子:111
专家分:0
注 册:2005-1-6
第
5
楼
收藏
得分:0
是無論你定義的是指針或者變量,隨它類型的被強制轉換,會產生一定的數據丟失後者錯誤
两耳不闻窗外事,专心只读圣贤书
2005-03-23 18:33
举报帖子
使用道具
赠送鲜花
ljzh_77
等 级:
新手上路
帖 子:20
专家分:0
注 册:2005-3-23
第
6
楼
收藏
得分:0
我觉得5楼楼主说的有理。
2005-03-23 19:10
举报帖子
使用道具
赠送鲜花
lntuzjc
等 级:
新手上路
帖 子:54
专家分:0
注 册:2005-3-23
第
7
楼
收藏
得分:0
我不是十分认可你的解释。你的意思是说:所有的类型转换都会发生数据丢失或者错误?那么,如果这是一道选择题,那么你会选中输出结果是3,0这个答案吗?
2005-03-24 00:26
举报帖子
使用道具
赠送鲜花
coloar123
等 级:
新手上路
帖 子:111
专家分:0
注 册:2005-1-6
第
8
楼
收藏
得分:0
話不是這麽說
我的意思是強制類型轉換是不安全的方式
两耳不闻窗外事,专心只读圣贤书
2005-03-24 14:07
举报帖子
使用道具
赠送鲜花
天使预备役
等 级:
论坛游民
威 望:
3
帖 子:670
专家分:10
注 册:2004-4-6
第
9
楼
收藏
得分:0
这不应该说是强制转换的问题,而是你的指针地址已经转变!
最后p1,p2指的是同一个起始地址(整型两个字节,浮点数四个字节),但因为整型数和浮点数的存储方式不一样才会出现这样的问题!!!
[此贴子已经被作者于2005-3-24 15:43:48编辑过]
差点把你忘了...
2005-03-24 15:42
举报帖子
使用道具
赠送鲜花
C世界
等 级:
新手上路
帖 子:16
专家分:0
注 册:2005-3-19
第
10
楼
收藏
得分:0
能不能说
int *p1和float *p是两个完全不同的地址.而且它们各自分配的地址也不同?
2005-03-24 18:11
举报帖子
使用道具
赠送鲜花
22
1/3页
1
2
3
快速回复:
谁能解释这个???
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.073847 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved