我正在尝试比较整数和双精度:
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;
答案 0 :(得分:9)
td <= pos < (td+tr)
从左到右进行评估。首先是
td <= pos
被评估为真值。然后将该真值与td+tr
进行比较。
这不是你想要的。你想要
if (td <= pos && pos < td+tr)
答案 1 :(得分:3)
您的代码没有按照您的想法执行,也许您需要
td <= pos && pos < (td+tr)