私はウェブからこの C プログラムを見つけました:
#include <stdio.h>
int main(){
printf("C%d\n",(int)(90-(-4.5//**/
-4.5)));
return 0;
}
このプログラムの興味深い点は、C89 モードでコンパイルして実行すると が出力されC89
、C99 モードでコンパイルして実行すると が出力されることですC99
。しかし、このプログラムがどのように動作するのか理解できません。
printf
上記のプログラムで の2 番目の引数がどのように機能するかを説明していただけますか?
ベストアンサー1
C99 では//
- スタイルのコメントが許可されていますが、C89 では許可されていません。したがって、次のように翻訳します。
C99:
printf("C%d\n",(int)(90-(-4.5 /*Some comment stuff*/
-4.5)));
// Outputs: 99
C89:
printf("C%d\n",(int)(90-(-4.5/
-4.5)));
/* so we get 90-1 or 89 */