double x;
int a = 10, b = 3;
x = a / b; /* x = 3.0 */x = (double) a / (double) b; /* x = 3.333333 */x = (double) a / b; /* x = 3.333333 */x = (double) (a / b); /* x = 3.0 */double x;
int a = 10, b = 3, c = 5, d = 2;
x = a / b + c / d; /* x = 5.0 */x = (double) a / b + c / d; /* x = 5.333333 */
では、2項+演算子よりも / 演算子の方が優先順位が高いので、(double) a / b の結果とc / d の結果が加算されることになり、正しい結果を得られません。
この場合には、c / d の方もキャストしなければなりません。
x = (double) a / b + (double) c / d; /* x = 5.833333 */
疲れました...or2
≪主なアニメの日別番組表 | HOME |
14: 暗黙の型変換≫