我从网上找到了这个C程序:
#include <stdio.h>
int main(){
printf("C%d\n",(int)(90-(-4.5//**/
-4.5)));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这个程序的有趣之处在于,当它在C89模式下编译和运行时,它会打印C89,当它被编译并在C99模式下运行时,它会打印出来C99.但我无法弄清楚这个程序是如何工作的.
你能解释一下第二个参数如何printf在上面的程序中起作用吗?
我正在研究Linux机器.是否有任何系统命令可以找到我正在使用的C编译器后面的标准?
我刚刚注意到对C11标准进行了修正,称为ISO/IEC 9899:2011/Cor 1:2012.
此更新中发生了哪些变化?
是否有任何我可以编写的代码或任何其他方式来检查我的编译器正在编译哪个版本的 C 语言?
我想知道是否有办法让我看看有问题的编译器是否是 C89、C99、C11、C18 等。也许利用__STDC_VERSION__.
我知道对于C11,我可以测试#if(__STDC_VERSION >= 20112L).但对于-std=c1x
我应该测试什么宏和/或值?
什么是这个标准的命名法?或者是非正式的名字,如果有的话.我希望这很清楚.提前致谢.