本人新手,没有分数可给,请大家帮帮忙

tiancai20042008 2008-09-17 11:12:42
#include <stdio.h>
main(int argc,char **argv)
{
double v1 =3.234343;
double v2 = 4.3435;
long v3 = 23;
long v4 = 34;
long v5 = 45;
long v6 = 87;
int i=0;
i = sizeof(double);
int j=0;
j= sizeof(long);
printf("%d\n%d\n",i,j);
printf("%ld\n%ld\n%ld\n%ld\n%ld\n%ld\n",v1,v5,v4,v3,v2,v6);
}
运行结果为:
8
4
956849994
1074388975
45
34
23
1992864825

我的疑问是,如果说v1只是取的实际V1的一半的话,那么以后的该是如何取,如果说我现在去掉V5和V6的话打印%ld格式的v1,v2,v3,v4,这样的话四个数全不对,这样我可以理解,但是如果换成6个数打印的话为什么是这样的结果
...全文
107 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
devil_zuiai 2008-09-19
  • 打赏
  • 举报
回复
#include <stdio.h>
int main(int argc,char **argv)
{
double v1 =3.234343;
double v2 = 4.3435;
long v3 = 23;
long v4 = 34;
long v5 = 45;
long v6 = 87;
int i=0;
i = sizeof(double);
int j=0;
j= sizeof(long);
printf("%d\n%d\n",i,j);
printf("%lf\n%ld\n%ld\n%ld\n%lf\n%ld\n",v1,v5,v4,v3,v2,v6);
return 0;
}
devil_zuiai 2008-09-19
  • 打赏
  • 举报
回复

#include <stdio.h>
int main(int argc,char **argv)
{
double v1 =3.234343;
double v2 = 4.3435;
long v3 = 23;
long v4 = 34;
long v5 = 45;
long v6 = 87;
int i=0;
i = sizeof(double);
int j=0;
j= sizeof(long);
printf("%d\n%d\n",i,j);
printf("%lf\n%ld\n%ld\n%ld\n%lf\n%ld\n",v1,v5,v4,v3,v2,v6);
return 0;
}
tiancai20042008 2008-09-19
  • 打赏
  • 举报
回复
数据是按printf里面的顺序,也就是v1,v5,v4,v3,v2,v6的顺序存放的,由于是按照("%ld\n%ld\n%ld\n%ld\n%ld\n%ld\n格式打印的,又因为V1是doubie类型的,长度是long类型的2倍,所以第一个打印出的数据其实只是v1数据的长度的一半,所以是不准确的,第二个打印出的是v1的另一半,所以也不准确,第三次打印出来的V4其实也就是紧跟着v1的v5,其他一次类推
studyrandy 2008-09-17
  • 打赏
  • 举报
回复
没明白啊。老兄,解释下。。。
tiancai20042008 2008-09-17
  • 打赏
  • 举报
回复
嘿嘿,我明白了,缓冲区是按printf()函数的打印顺序存放数据的,所以结果是这样的

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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