【发布时间】:2018-05-06 17:51:44
【问题描述】:
我找到了两种解决方案来确定两个数字是否具有相同的奇偶性(均为奇数或均为偶数)。在 C++ 中,它们看起来像这样:
if ((a+b)%2 == 0)
和
if (a%2 == b%2)
问题是第一个适用于 100% 的案例,而第二个仅适用于 80% 的案例(我在网站上提交的问题的测试),我不明白为什么。对我来说,两行代码都应该在所有情况下都能正常工作。有人可以解释一下为什么第一行代码在所有情况下都有效,而第二行则不行吗?您会推荐哪种方法(我或其他人展示的方法)?
【问题讨论】:
-
你能提供一个 #2 不起作用的测试用例吗?
-
我认为问题一定出在您尚未发布的代码中。请提供minimal reproducible example。
-
尝试使用负数和正/负混合。
-
对。取负数的余数会得到什么结果?
-
不。如果它是消极的或积极的,它在语言中是未指定的。在包括 x86 在内的许多硬件平台上,它将是一个负数。