printf()
接受可变数量的参数(有时是2个参数,有时是3个参数等),因此该语句有效
printf ("%d %d %d",i,j);
这是什么意思?
答案 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
...
根据体系结构,编译器,优化等等,您可以获得任何数字。