2017-03-01 113 views
1
i = 0; 
if(0 <= i <= 0) 

这将返回false。零大于或等于零评估为假

我完全不理解这一点。 Watch window我也试过在单独测试它们时将语句读为(0 <= i && i <= 0)0 <= i返回false,而i <= 0返回true。他们都应该是真实的。我不确定这是否是一个精确的事情,但我不这么认为,因为我很难编码这些值。请帮助我理解这个基本问题。

如果它有帮助我试图通过获取交点来评估一个点是否在一条线上,然后检查它是否在x和y起点和终点之间。当我试图检查x或y是否在轴上时,这会成为一个问题,然后遇到检查0是否在0和0之间的问题。哪一个是这样会落在行上。

+2

因为你必须写'0 <= i && i <= 0'。否则,它就像'(0 <= i)<= 0“,即首先评估'(0 <= i)'并给出true。 true与零不同,所以'true <= 0'为false – Garf365

+0

Thank's Garf365。我认为就是这样。那是我预期的那么简单得多。现在可能应该去睡觉了。 –

+1

@ Garf365确切地说,关系运算符返回类型'int',值'0'或'1'。不“真”。 – user694733

回答

7

关系运算符的链接是不可能的(根据期望生成有效的结果),您需要编写单独的指令来验证每个条件。

由于absence of explicit parenthesis and LTR association,像

if(0 <= i <= 0) 

一个语句作为

if((0 <= i) <= 0) 

其归结为

if (1 <= 0) 

其产生的0,(FALSE)进行评价。

这就是说,要求有关

我也试图使宣读的声明(0 <= i && i <= 0)当我分别测试他们0 <= i回报,同时i <= 0返回true假。他们都应该是真实的

是不正确的,他们同时为真See for yourself