注册 登录
编程论坛 C++教室

[求助]浮点数的位码与string函数的问题

kyan54 发布于 2007-04-18 11:58, 705 次点击

1.浮点数的位码

#include<iostream>
using namespave std;
int main()
{
float f=19.2F;
unsigned int* pa=reinterpret_cast<int*>(&f)
for(int i=31;i>=0;i--)
cout<<(*pa>>i &1)<<(i=31 || i==23?"-":"");
cout<<"\n";
}

unsigned int* pa=reinterpret_cast<int*>(&f)

unsigned int* pa=reinterpret_cast<int*>(&f)这个怎么也看不明白




2.
#include<iostream>
using namespace std;
int main()
{
for(int i=1;i<=10;i++)
cout<<string(10-i,' '); 这是什么函数?string功能是啥?
for(char ch='A';ch<=64+2*i;ch++)
cout<<ch;
cout<<endl;
}

希望高手指教下..我是在钱能的C++程序设计教程第2版里看到的..

3 回复
#2
yuyunliuhen2007-04-18 12:44
以下是引用kyan54在2007-4-18 11:58:26的发言:

1.浮点数的位码

#include<iostream>
using namespave std;
int main()
{
float f=19.2F;
unsigned int* pa=reinterpret_cast<int*>(&f)
for(int i=31;i>=0;i--)
cout<<(*pa>>i &1)<<(i=31 || i==23?"-":"");
cout<<"\n";
}

unsigned int* pa=reinterpret_cast<int*>(&f)

unsigned int* pa=reinterpret_cast<int*>(&f)这个怎么也看不明白

reinterpret_cast 显示类型转换,一般处理不相关类型之间的转换,例如从整数到指针,或者从一个指针到一个毫不相关的指针类型,reinterpret_cast<int*>(&f)将&f转换为int*,再将转换的值赋给pa,但需要谨慎使用 reinterpret_cast. reinterpret_cast的类型转换相对比较危险.相对(static_cast)


提供另一个static_cast运算符完成相关类型之间的转换,如在同一个类层次结构中的一个指针到年个 一个指针的转换,整形到枚举类型,或浮点到整形等.

区别:
static_cast 在编译时使用类型信息执行转换, 在转换执行必要的检测(诸如指针越界计算, 类型检查). 其操作数相对是安全的. 另一方面, reinterpret_cast 仅仅是重新解释了给出的对象的比特模型而没有进行二进制转换.


[此贴子已经被作者于2007-4-18 12:46:01编辑过]

#3
kyan542007-04-18 15:45

明白了点..谢谢
那第2个呢~~
#include<iostream>
using namespace std;
int main()
{
for(int i=1;i<=10;i++)
cout<<string(10-i,' '); 这是什么函数?string功能是啥?
for(char ch='A';ch<=64+2*i;ch++)
cout<<ch;
cout<<endl;
}

string是什么意思?

#4
游乐园2007-04-18 17:38
1.

reinterpret_cast<type> pre-type //类型转换 type是你想要转换的类型 pre-type是被转换的类型


2.

string 是个类
char* string(int num,const char ch);//估计是string类的一种构造函数 ,num个 ch字符 ,构成一个string 的对象

[此贴子已经被作者于2007-4-18 17:55:28编辑过]

1