[英]C programming %d { printf(“%d”); }
該程序如下:
#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
。 為什么會給出這樣的輸出?
它嘗試訪問在調用printf()的堆棧上恰好位於假定的“第五個參數”的偏移處的任何數據,而您對函數的調用顯然沒有提供。
-Wall
參數,該參數會告訴您: $ gcc -Wall main.c main.c: In function 'main': main.c:5:4: warning: format '%d' expects a matching 'int' argument [-Wformat]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.