当前位置: 代码迷 >> C语言 >> 计算结果怎么跟打印结果不一样
  详细解决方案

计算结果怎么跟打印结果不一样

热度:374   发布时间:2008-06-28 20:24:37.0
计算结果怎么跟打印结果不一样
#include <stdio.h>
main()
{
static int a[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};
char *PF;
PF="%d,%d,%d,%d,%d\n";
printf(PF,a,*a,a[0],&a[0],&a[0][0]);
printf(PF,a+1,*(a+1),a[1],&a[1],&a[1][0]);
printf(PF,a+2,*(a+2),a[2],&a[2],&a[2][0]);
printf("%d,%d\n",a[1]+1,*(a+1)+1);
printf("%d,%d\n",*(a[1]+1),*(*(a+1)+1));
}
计算结果:0,0,0,0,0
          4,4,4,4,4
          8,8,8,8,8
          5,5
          5,5
打印结果:4202504,4202504,4202504,4202504,4202504
          4202520,4202520,4202520,4202520,4202520
          4202536,4202536,4202536,4202536,4202536
          4202524,4202524
          5,5
为什么不一样
搜索更多相关的解决方案: 打印  结果  

----------------解决方案--------------------------------------------------------

----------------解决方案--------------------------------------------------------
PF="%d,%d,%d,%d,%d\n";

这个什么意思~~~看不懂...
----------------解决方案--------------------------------------------------------
为什么要用指针指向字符串,用#define来定义"%d,%d,%d,%d,%d\n"不是更好么?
----------------解决方案--------------------------------------------------------
[bo][un]yjcf[/un] 在 2008-6-29 11:31 的发言:[/bo]

为什么要用指针指向字符串,用#define来定义"%d,%d,%d,%d,%d\n"不是更好么?

这个没有所谓什么更不更好吧
----------------解决方案--------------------------------------------------------
[bo][un]qGemini[/un] 在 2008-6-29 11:33 的发言:[/bo]


这个没有所谓什么更不更好吧


晕,你见过有这样定义引用吗??
----------------解决方案--------------------------------------------------------
………………汗,你还不如定义宏呢!
----------------解决方案--------------------------------------------------------
看看数组和指针的关系
----------------解决方案--------------------------------------------------------
[bo][un]yjcf[/un] 在 2008-6-29 11:57 的发言:[/bo]



晕,你见过有这样定义引用吗??

有这样的定义,不过很少见!
----------------解决方案--------------------------------------------------------
楼主的程序涉及到逻辑地址和物理地址之间的转换,所以打印结果和你的分析不同!楼主分析的是逻辑上的地址,而输出则是物理地址。想详细了解,可以看看操作系统方面的书!
----------------解决方案--------------------------------------------------------