我發現從網絡這個C程序:下面的程序在C89模式下編譯時如何輸出「C89」,當編譯爲C99模式時如何輸出「C99」?
#include <stdio.h>
int main(){
printf("C%d\n",(int)(90-(-4.5//**/
-4.5)));
return 0;
}
這個程序有趣的是,當它被編譯並在C89模式下運行,它打印C89
,當它被編譯並運行C99模式下,它會打印C99
。但我無法弄清楚這個程序是如何工作的。
您能否解釋printf
的第二個參數在上述程序中的工作原理?
提示:在C99中引入了C++風格的'//'註釋。 –
不錯的訣竅 - 但它失敗與'gcc'。如果沒有'std = c99',你會得到一個警告,如果你忽略它,'gcc'仍然會*解釋'//'作爲註釋的開始(啊 - 你也必須使用'-pedantic' 。默認情況下是這樣的。) – usr2564301
@Jongware嗯,我在'gcc 4.9.2'中用'std = c89'顯示'C89'。 – ikh