改成if(m==0&&n==0) 就正常了 这是为什么
编写程序时请不要为了简便而使用数学的一些写法。诸如
a < b < c 或者 a == b == c之类的写法和数学中的逻辑是完全不同的。
比如看你这里的
计算机执行这条判断时其实执行的是
(m == n) == 0也就是说会分两步走,首先判断
m == n的值,如果 m 和 n 相等,那么 m == n 的值就是 true (也就是 1),如果 m 和 n 不等,那么 m == n 的值就是 false (也就是 0)。
得到 m == n 的值后就可以接着判断
(m == n) == 0的值了。如上面所说,如果 m 等于 n,那么 m == n 的值就为 1,1 不等于 0,所以
的最终结果就是 false。如果 m 不等于 n,那么 m == n 的值就为 0,0 等于 0,所以
(m == n) == 0的最终结果就是 true。
也就是说,你这条判断
if (m == n == 0) {...} 在 m 和 n 的值不等时才会执行,在 m 和 n 的值相等时不会执行。这和你想要实现的效果是完全相反的。所以以后千万不要在编写程序时使用数学连写方法。该使用逻辑运算符 && 或 || 时就一定要使用。