Printf函数参数

时间:2014-07-10 09:45:48

标签: c

printf()接受可变数量的参数(有时是2个参数,有时是3个参数等),因此该语句有效

printf ("%d %d %d",i,j);
这是什么意思?

1 个答案:

答案 0 :(得分:1)

printf()将读取堆栈中的某个变量恰好位于缺少%d的位置。在我的电脑上:

#include <stdio.h>

int
main(int argc, char **argv)
{
  int i = 1, j = 2;

  printf("%d %d %d", i, j);
  return 0;
}

会打印:

1 2 4201256

可以通过查看堆栈内容来解释此编号4201256

...
0022FF00  00403064  .rdata:aDDD
0022FF04  00000001                          ; 1
0022FF08  00000002                          ; 2
0022FF0C  00401B28  sub_401AE0+48           ; 0x00401B28 = 4201256 (third %d)
0022FF10  00401A60  sub_401650:loc_401A60
...

根据体系结构,编译器,优化等等,您可以获得任何数字。

了解stack frame/call stack/activation record