程序如下:
#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;
}codepad.org上的输出如下: 11110
ideone.com上的输出如下: 1111-1074526944,其中-1074526944不断更改每次执行。
我在我的个人gcc上完成的输出是: 11110我没有最新的gcc
在printf();声明中,我不关心前四个%d,因为它非常明显。这是我所关心的第五个%d。为什么会给出这样的输出?
发布于 2012-06-09 18:23:54
它尝试访问对printf()的调用堆栈中的任何数据,在偏移量处,假定的“第五个参数”,而您对函数的调用显然没有提供这个参数。
-Wall参数,这将告诉您:。
$ gcc -Wall main.cmain.c:在函数‘main’:main.c:5:4:警告:格式‘%d’需要匹配的‘int’参数-Wformat
https://stackoverflow.com/questions/10963466
复制相似问题