65,210
社区成员
发帖
与我相关
我的任务
分享int main(int argc, char* argv[])
{
float a=1.2,b=0.01;
printf("%08X\n\n%08X\n\n",b,a);
printf(" \n");
printf("%08X\n\n%08X\n\n",a,b);
return 0;
}
无关紧要,一起思考,我估计是不是printf本身就有问题
[/quote]
写这些函数的那帮人不会让我们这种等级的人抓住把柄的
你的程序输出的根本就不是a,b变量的值
测试一下这个代码,看看和你的一样不
#include <stdio.h>
int main(int argc, char* argv[])
{
float a=1.2,b=0.01;
printf("%08X\n\n%08X\n\n",b);//注意:这里输出的只有b
printf(" \n");
printf("%08X\n\n%08X\n\n",a);//这里只有a
return 0;
}
int main(int argc, char* argv[])
{
float a=1.2,b=0.01;
double da = a,db = b;
int *pa =(int * )&da;
printf("%08X\n\n%08X\n\n",b,a);
printf(" \n");
printf("%08X\n\n%08X\n\n",b,a);
后面的输出,跟前面两个相同,或者反序(如果有字节序问题)
printf("%08X\n\n%08X\n\n%08X\n\n%08X\n\n",pa[0],pa[1],pb[0],pb[1]);
return 0;
}
无关紧要,一起思考,我估计是不是printf本身就有问题
[/quote]
每一次运行,都是同样的结果吗?还是地址都是变化的?
函数参数传递的时候,因为传递的是值,只是简单把值复制过去了。
也就是说,在printf函数内部,a和b的存储位置,都是新的(临时变量)地址。
[/quote]
也不对,printf变参函数,在访问argv时候,都是地址访问的。不会开辟新的空间。
等高人给权威回复吧
无关紧要,一起思考,我估计是不是printf本身就有问题
[/quote]
每一次运行,都是同样的结果吗?还是地址都是变化的?
函数参数传递的时候,因为传递的是值,只是简单把值复制过去了。
也就是说,在printf函数内部,a和b的存储位置,都是新的(临时变量)地址。
无关紧要,一起思考,我估计是不是printf本身就有问题
int main(int argc, char* argv[])
{
float a=125.5;
printf("%x %x\n",a,a);//这里打印出来的两个a值也不相同
printf("%x\n",a);//下面两行却相同
printf("%x",a);
return 0;
}