1

整数と倍精度を比較しようとしています:

printf("%d\n", pos<(td+tr));
            if(td <= pos < (td+tr))
            {}

print ステートメントは比較をpos<(td+tr)適切に評価します。比較が正しく評価されif(td <= pos < (td+tr))ません。

Pos は int です: int pos; td と tr は double です:double td,tr;

4

2 に答える 2

9
td <= pos < (td+tr)

左から右に評価されます。だから最初に

td <= pos

真値に評価されます。そして、その真理値が と比較されtd+trます。

それはあなたが望むものではありません。あなたがしたい

if (td <= pos && pos < td+tr)
于 2012-05-18T17:08:34.983 に答える
3

あなたのコードは、おそらくあなたが思っていることをしていない、おそらくあなたが必要としている

td <= pos && pos < (td+tr)

?

于 2012-05-18T17:07:43.903 に答える