相关疑难解决方法(0)

当在C89模式下编译时,以下程序如何输出`C89`和在C99模式下编译时输出`C99`?

我从网上找到了这个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在上面的程序中起作用吗?

c printf comments c99 c89

125
推荐指数
3
解决办法
5605
查看次数

如何找到我当前的编译器标准,如果它是C90等

我正在研究Linux机器.是否有任何系统命令可以找到我正在使用的C编译器后面的标准?

c compiler-construction c99 c89

27
推荐指数
5
解决办法
2万
查看次数

什么是C11 cor 1:2012?

我刚刚注意到对C11标准进行了修正,称为ISO/IEC 9899:2011/Cor 1:2012.

此更新中发生了哪些变化?

c c11

15
推荐指数
1
解决办法
818
查看次数

如何检查我的编译器正在使用哪个版本的 C?

是否有任何我可以编写的代码或任何其他方式来检查我的编译器正在编译哪个版本的 C 语言?

我想知道是否有办法让我看看有问题的编译器是否是 C89、C99、C11、C18 等。也许利用__STDC_VERSION__.

c

4
推荐指数
2
解决办法
3195
查看次数

如果使用-std = c1x,如何使用__STDC_VERSION__进行检查?

我知道对于C11,我可以测试#if(__STDC_VERSION >= 20112L).但对于-std=c1x

我应该测试什么宏和/或值?

什么是这个标准的命名法?或者是非正式的名字,如果有的话.我希望这很清楚.提前致谢.

c gcc4 c11

2
推荐指数
1
解决办法
2046
查看次数

标签 统计

c ×5

c11 ×2

c89 ×2

c99 ×2

comments ×1

compiler-construction ×1

gcc4 ×1

printf ×1