0

私が次のような状態にある場合;

int a = 1;
int b = 3;

if ((a/b) > 0) ...

中間結果 (a/b) は float (0.33) または int (丸めのため 0) のように脅かされていますか? 私は VB6 の世界から来ましたが、2 つの整数を除算すると中間結果も整数になるため (そして 0 > 0 = false)、この条件は false と評価されます。

4

1 に答える 1

8

2 つの整数を除算すると、整数除算になります。つまり、結果は切り捨てられます。この場合、常に 0 と評価されます。結果を浮動小数点値にしたい場合は、単純に int を float で割るか、float を int で割るか、2 つの float で割ることができます。(少なくとも 1 つのオペランドを浮動小数点型にキャストすることで、同様の動作を実現できます。)

于 2013-01-20T14:55:04.693 に答える