奇怪的行为,我对计算机科学的教学助理和我的一个学生提出以下的代码来检查一个整数是否是奇数还是偶数:检查一个数字是否在C++中是奇数。代码
int is_odd (int i) {
if((i % 2 == 1) && (i % 2 == -1));
else;
}
令人惊讶的(至少对我来说)这个代码提供正确的结果。我测试了高达100000000的数字,并且我实在无法解释为什么这个代码的行为与它一样。
我们正在使用gcc V6.2.1和C++
我知道,这是不是这么一个典型的问题,但我希望能找到一些帮助。
给出正确结果?该函数应该返回一个int,但不返回任何内容。它的行为是不确定的。你如何确定结果是“正确的”? – StoryTeller
当你实际修复它时,它根本不正确。 http://ideone.com/5bs2aF – StoryTeller
行为未定义。看看[这里](http://melpon.org/wandbox/permlink/HbRsBuRh5fAnBA0U)。我们可以构建一个关于'mod'的论据或者在'eax'中相应地留下'0'或'1'的东西,但是它很脆弱 – krzaq