2012-05-18 56 views
1

我試圖比較整數和雙:ANSI C - 比較怪異

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 td,tr;

回答

9
td <= pos < (td+tr) 

從左到右評估。所以首先

td <= pos 

被評估爲真值。然後將該真值與td+tr進行比較。

這不是你想要的。你想要

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

您的代碼沒有做什麼,你可能認爲它,也許你需要

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