【发布时间】:2014-12-11 08:01:04
【问题描述】:
- 请忽略这个问题 - 这是错误的
我不确定我的问题是否与运算符优先级有关——只是为了排除我添加了额外的括号。我的理解是在这种情况下,每个括号中的代码都会被执行。所以基本上所有的 OR 操作都会发生,并且它的输出会被 AND'ed 到条件 a。 我有以下参数集 a = true 和 c = 254 , b 不可用( b 初始化为 0 - 在任何给定时间,只有 b 或 c 可用)。因此,对于上述情况,我期望 if 条件会导致 true 但它会导致 false 条件。有什么理由吗?还有什么是调试此类事情的最佳方法,例如在哪里出现错误 - 任何指针
if ((a == true) && ((b == 460) || (b == 454) || (b == 455) ||
(c> 13568 && c< 14335) ||
(c> 10640 && c< 10655) ||
(c> 11296 && c< 11311) ||
(c> 25600 && c< 26111) || (c== 7825)))
【问题讨论】:
-
每对括号中的代码不是执行,而是求值。 'b 不可用'是什么意思?是
0还是没有初始化? -
当 c 为 254 且 b 为“不可用”(这是什么意思?0?)时,您的条件的第二部分为假,则 (a == true) && false 导致假跨度>
-
b 初始化为零
-
对于 a = true, c = 254,你的 false 结果是正确的。您究竟希望在 OR 集中评估为真?
-
如果你的问题是错误的,你应该删除它。