私はこの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で導入されました。