2012-07-03 70 views

回答

0

從技術上講,如果printf()中的格式說明符的數量大於參數的數量,則它的未定義行爲。

但是下面是細

printf("%d",x,y); // y is evaluated but not printed. 

1

在GCC - 你得到一個警告(這是使用__attribute__ ((__warn_unused_result__))完成)。

在x86上,您不會收到堆棧錯誤,因爲調用者會將數據推送到堆棧,並且在函數返回後也彈出。這被稱爲C調用約定,與pascal不同,該函數也會彈出堆棧中的數據(例如,在ASM中使用ret 10)。

你需要的數據值是隨機的。

0

在這種情況下,你會得到garbage data,它依靠編譯器及其編譯選項....

0

它將打印垃圾值,但它警告「比數據參數更多%的轉化率」。

相關問題