TIL 220218


C
せいけいかん
浮動小数点変数にintを区切って格納するコードをコンパイルすると、次の警告が表示されます.
test.c:8:14: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘double’ [-Wformat=]
     printf("%d MB",memory);
             ~^
             %f
これは,整数型int和の計算が実数型floatに格納されることによる問題である.無視して実行すると、小数点は無視され、1.000000 MBなどの結果が出力されます.
このようにintとの計算において、計算結果を小数点を計算するfloat型に変換するには、計算したint型変数の一部をfloat型に変換する必要がある.float memory = (float)h*b*c*s/8/1024/1024;
上のコードは、floatタイプのメモリに適応するためにhをfloatに変換します.
例:https://codeup.kr/problem.php?id=1085