一段c++程序,小弟看不懂#include #include using namespace std;void main(){double t=15.9375;char *low=(char *)&t;char *high=(char *)(&t+1)-1;char *cp=high;//从高字节到低字节,每个字节一组while(cp >=low){bitsetbs(*cp);cout
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/30 07:44:11
一段c++程序,小弟看不懂#include #include using namespace std;void main(){double t=15.9375;char *low=(char *)&t;char *high=(char *)(&t+1)-1;char *cp=high;//从高字节到低字节,每个字节一组while(cp >=low){bitsetbs(*cp);cout
一段c++程序,小弟看不懂
#include
#include
using namespace std;
void main(){
double t=15.9375;
char *low=(char *)&t;
char *high=(char *)(&t+1)-1;
char *cp=high;
//从高字节到低字节,每个字节一组
while(cp >=low)
{
bitsetbs(*cp);
cout
一段c++程序,小弟看不懂#include #include using namespace std;void main(){double t=15.9375;char *low=(char *)&t;char *high=(char *)(&t+1)-1;char *cp=high;//从高字节到低字节,每个字节一组while(cp >=low){bitsetbs(*cp);cout
哥帮你看,给分我.
我先洗澡,有什么问题继续问
double t=15.9375;
//double占8个字节.&t 则是指向double型的指针(指向8个字节的第一个字节).
char *low=(char *)&t;
char 占1个字节,char *low 为指针,指向char型变量的第一个字节,也是唯一一个字节.
(char *) &t ::::&t本来是表示8个字节的double的指针.但被强制转换成表示1个字节的char指针.指向double t 的第一个字节.
所以 char *low=(char *)&t; 指向double t 的第一个字节.
char *high=(char *)(&t+1)-1;
(&t+1) &t还没被强制转换,所以&t + 1 表示指向double t 后的8个字节.
(char *)(&t+1)强转后,指向 &t+1表示double t 后的的第1个字节.
char *high=(char *)(&t+1)-1; 后退一个(char *) 的距离,即一个字节.指向double t中八个字节中的最后一个字节.
char *cp=high;
指向double t中八个字节中的最后一个字节.
所以最后是:
char *low=(char *)&t; 指向double t 的第一个字节.
char *cp=high;指向double t中八个字节中的最后一个字节.