Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
整数と倍精度を比較しようとしています:
printf("%d\n", pos<(td+tr)); if(td <= pos < (td+tr)) {}
print ステートメントは比較をpos<(td+tr)適切に評価します。比較が正しく評価されif(td <= pos < (td+tr))ません。
pos<(td+tr)
if(td <= pos < (td+tr))
Pos は int です: int pos; td と tr は double です:double td,tr;
int pos;
double td,tr;
td <= pos < (td+tr)
左から右に評価されます。だから最初に
td <= pos
真値に評価されます。そして、その真理値が と比較されtd+trます。
td+tr
それはあなたが望むものではありません。あなたがしたい
if (td <= pos && pos < td+tr)
あなたのコードは、おそらくあなたが思っていることをしていない、おそらくあなたが必要としている
td <= pos && pos < (td+tr)
?