| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1372 人关注过本帖
标题:谁能解释这个???
只看楼主 加入收藏
lntuzjc
Rank: 1
等 级:新手上路
帖 子: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
Rank: 1
等 级:新手上路
帖 子:111
专家分:0
注 册:2005-1-6
收藏
得分:0 
這個是類型強制轉換p2=(float *)p1;所產生的數據丟失和變動

两耳不闻窗外事,专心只读圣贤书
2005-03-23 14:21
coloar123
Rank: 1
等 级:新手上路
帖 子:111
专家分:0
注 册:2005-1-6
收藏
得分: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
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2005-3-23
收藏
得分: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
Rank: 1
等 级:新手上路
帖 子:111
专家分:0
注 册:2005-1-6
收藏
得分:0 
是無論你定義的是指針或者變量,隨它類型的被強制轉換,會產生一定的數據丟失後者錯誤

两耳不闻窗外事,专心只读圣贤书
2005-03-23 18:33
ljzh_77
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2005-3-23
收藏
得分:0 
我觉得5楼楼主说的有理。

2005-03-23 19:10
lntuzjc
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2005-3-23
收藏
得分:0 
我不是十分认可你的解释。你的意思是说:所有的类型转换都会发生数据丢失或者错误?那么,如果这是一道选择题,那么你会选中输出结果是3,0这个答案吗?
2005-03-24 00:26
coloar123
Rank: 1
等 级:新手上路
帖 子:111
专家分:0
注 册:2005-1-6
收藏
得分:0 
話不是這麽說

我的意思是強制類型轉換是不安全的方式

两耳不闻窗外事,专心只读圣贤书
2005-03-24 14:07
天使预备役
Rank: 2
等 级:论坛游民
威 望:3
帖 子:670
专家分:10
注 册:2004-4-6
收藏
得分:0 
这不应该说是强制转换的问题,而是你的指针地址已经转变!
最后p1,p2指的是同一个起始地址(整型两个字节,浮点数四个字节),但因为整型数和浮点数的存储方式不一样才会出现这样的问题!!!

[此贴子已经被作者于2005-3-24 15:43:48编辑过]



差点把你忘了...
2005-03-24 15:42
C世界
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2005-3-19
收藏
得分:0 
能不能说
int *p1和float *p是两个完全不同的地址.而且它们各自分配的地址也不同?
2005-03-24 18:11
快速回复:谁能解释这个???
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.073847 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved