我从网上找到了这个C程序:
#include <stdio.h>
int main(){
printf("C%d\n",(int)(90-(-4.5//**/
-4.5)));
return 0;
}
该程序的有趣之处在于,当它在C89模式下编译并运行时,它会打印,C89
而当它在C99模式下编译并运行时,它会打印C99
。但我无法弄清楚该程序如何工作。
您能否解释printf
上述程序中第二个参数的工作方式?
不错的窍门-但失败了
—
usr2564301
gcc
。如果没有std=c99
,你会得到一个警告,如果你忽视它,gcc
将仍然解释//
为注释的开始(啊-你必须使用-pedantic
,以及我有一个默认。)
@Jongware好吧,我在gcc 4.9.2中获得
—
ikh
C89
了显式的支持std=c89
。
以防万一有人在寻找测试C99支持的方法时发现了这一点;请使用类似之类的东西
—
Arkku
#if __STDC_VERSION__ >= 199901L
,而不是//
注释技巧。=)
它还为C11打印“ C99” ...
—
伦丁,2015年
//
C99 风格的注释是在C99中引入的。