私はこのCプログラムをウェブから見つけました:
#include <stdio.h>
int main(){
printf("C%d\n",(int)(90-(-4.5//**/
-4.5)));
return 0;
}
このプログラムの興味深い点は、C89モードでC89
コンパイルおよび実行すると印刷され、C99モードでコンパイルおよび実行すると印刷されることC99
です。しかし、私はこのプログラムがどのように機能するかを理解することができません。
printf
上記のプログラムで2番目の引数がどのように機能するかを説明できますか?
いいトリックですが、で失敗し
—
usr2564301
gcc
ます。なければstd=c99
警告を得るでしょう、そしてあなたはそれを無視した場合、gcc
ます、まだ解釈//
コメントの開始として(ああ-あなたが使用する必要があります-pedantic
。同様に、私はデフォルトでオンになっているがあります。)
@Jongwareまあ、私はgcc 4.9.2
—
ikh 2015年
C89
で明示的に取得しstd=c89
ました。
C99サポートをテストする方法を探しているときに誰かがこれを見つけた場合に備えて。コメントトリック
—
Arkku
#if __STDC_VERSION__ >= 199901L
ではなく、などを使用してください//
。=)
また、C11の「C99」も出力します...
—
Lundin
//
コメントはC99で導入されました。