C语言中 scanf("%d %d",&m,&n); if (m==n==0) XXXXXXX 然而当我输入0 0时 不会执行XXXX
2个回答
展开全部
编写程序时请不要为了简便而使用数学的一些写法。诸如
a < b < c 或者 a == b == c
之类的写法和数学中的逻辑是完全不同的。
比如看你这里的
m == n == 0
计算机执行这条判断时其实执行的是
(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,所以
(m == n) == 0
的最终结果就是 false。如果 m 不等于 n,那么 m == n 的值就为 0,0 等于 0,所以
(m == n) == 0
的最终结果就是 true。
也就是说,你这条判断
if (m == n == 0) {...}
在 m 和 n 的值不等时才会执行,在 m 和 n 的值相等时不会执行。这和你想要实现的效果是完全相反的。所以以后千万不要在编写程序时使用数学连写方法。该使用逻辑运算符 && 或 || 时就一定要使用。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询