该计划如下:
#include<stdio.h>
int main()
{
int a[7]={1,2,3,4};
printf("%d%d%d%d%d",(*a),*(&*a),a[*a*0],*a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
codepad.org上的输出如下:11110
ideone.com上的输出如下:1111-1074526944 其中-1074526944每次执行都会变化
我在我的个人gcc输出上执行它是:11110 我没有最新的gcc
在printf();声明中我不关心前四个%d因为它完全显而易见.这是我关注的第五个 %d问题.为什么会提供这样的输出?
它试图访问在假定的"第五个参数"的偏移处对printf()的调用堆栈上发生的任何数据,你对该函数的调用显然没有提供.
-Wall参数,该参数会告诉您:Run Code Online (Sandbox Code Playgroud)$ gcc -Wall main.c main.c: In function ‘main’: main.c:5:4: warning: format ‘%d’ expects a matching ‘int’ argument [-Wformat]