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;
我試圖比較整數和雙: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;
td <= pos < (td+tr)
從左到右評估。所以首先
td <= pos
被評估爲真值。然後將該真值與td+tr
進行比較。
這不是你想要的。你想要
if (td <= pos && pos < td+tr)
您的代碼沒有做什麼,你可能認爲它,也許你需要
td <= pos && pos < (td+tr)
?