帮忙解释一段程序

APIandMFC 2008-11-10 10:59:35
#include<iostream>
#include<cstdlib>
using namespace std;
void printBinary(const unsigned char val)
{
for(int i=7;i>=0;i--)
if(val & (1<<i))
cout<<"1";
else
cout<<"0";
}
void main()
{
float f;
cin>>f;
unsigned char* pt;
cout<<&f<<endl;
pt=(unsigned char*)&f;
//!cout<<pt<<endl;为什么打印不出来?
for(int i=sizeof(float);i>0;i-=2)//为什么要-2?
{
printBinary(pt[i-1]);//pt[i-1]是什么意思?变量还能用[]运算符?
printBinary(pt[i]);//为什么要调用两次这个函数?
}
}

运行程序:
1.0
0013FF7C
00111111110000000000000010000000Press any key to continue
再运行程序:
2.0
0013FF7C
01000000110000000000000000000000Press any key to continue
请再解释一下结果 谢谢了
...全文
85 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
lucky_06 2008-11-10
  • 打赏
  • 举报
回复
float f;

unsigned char* pt;
的内存空间不一样,当然不能这样打印
你要先将f转成 char* ,才能打印



printBinary(pt[i-1]);//pt[i-1]是什么意思?变量还能用[]运算符?
printBinary(pt[i]);//为什么要调用两次这个函数?

这个是倒序地2个字符地打印
因为 float 的 大小是 偶数,所以可以这样

pt 是 指针, pt[i], 就是访问第 i 个位置

但是i 的第一个位置 是 0 ,所以 由 i-1开始


建议LZ看看C++的基础书吧.....

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧