CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

新人问问题

楼主anonhero(不强)2005-11-07 11:10:25 在 C/C++ / C++ 语言 提问

以下有三段程序,  
  第一输出:3,0。  
  第二输出:3,越界      
  第三输出:3,3  
   
  第一个我懂,  
  第二个不懂为什么会这样,  
  第三个不是float型的嘛,应该是3.0,3.0啊,怎么是3,3  
   
   
  一.  
  #include<iostream.h>  
  void   main()  
  {  
  int   i=3,j;  
  float   *p;  
  p=(float   *)&i;  
  cout<<i<<endl;  
  j=*p;  
  cout<<j<<endl;  
  }  
   
  二.  
  #include<iostream.h>  
  void   main()  
  {  
  int   i=3;  
  float   j,*p;  
  p=(float   *)&i;  
  cout<<i<<endl;  
  j=*p;  
  cout<<j<<endl;  
  }  
   
  三.  
  #include<iostream.h>  
  void   main()  
  {  
   
  float   i,j,*p;  
  p=&i;  
  cout<<i<<endl;  
  j=*p;  
  cout<<j<<endl;  
  }  
  问题点数:20、回复次数:3Top

1 楼xiaocai0001(高楼目尽欲黄昏/梧桐叶上萧萧雨)回复于 2005-11-07 11:30:22 得分 0

实际上就是对内存的同一数据  
   
  按不同格式进行解析.Top

2 楼xiaocai0001(高楼目尽欲黄昏/梧桐叶上萧萧雨)回复于 2005-11-07 11:37:40 得分 0

0011   1111   1000   0000   0000   0000   0000   0000  
  (0x3F800000)  
  按float类型解析为:   0.000000  
  按int类型解析为:       1065353216  
   
  1000   0000   0000   0000   (0x8000)  
  按unsigned   short   解析为   32768  
  按signed   short   解析为   -32768  
   
  就是这么简单的一回事.Top

3 楼wangjing1228(~啦啦~)回复于 2005-11-07 11:39:38 得分 20

二、p指向i的地址,但p代表指地址后的4个字节(假设int占2,float就占4)  
  i   10000,10001  
  p   10000,10001,10002,10003  
  知道10000   和100001的内容,不知道10002和10003的内容,所以j=*p的时候不知道结果会是多少Top

相关问题

  • 新人问问题~
  • 新人问问题
  • 新人问问题
  • 新人问问题关于指针的
  • 新人问问题关于指针
  • 新人问问题有关动态内存分配问题
  • 新人
  • 新人
  • 新人
  • 问,问题,问问题,问问问题 :)

关键词

  • 输出
  • float
  • cout
  • void main

得分解答快速导航

  • 帖主:anonhero
  • wangjing1228

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo