我做一个简单的MIN()函数时,我突然问自己这有一点问题更加复杂,比我虽然C++ - 古怪的函数返回值
我创建了一个有效的功能,并得到了主意,省略这两个数字之间的一个条件。这里是我的功能:
int min(int x, int y) {
if (x > y) {
return y;
}
else if (x < y) {
return x;
}
}
所以它完全适用于不同的号码,如果我把2和3的内部,它会返回2. 但发生什么事,当我把两个时间相同数量?例如:2和2
2> 2和2 < 2都是无效的,所以它只是返回...什么都没有?
即使我编译了程序(VS2015),我得到了一个关于未测试每个案例(正常),以及何时运行...的警告输出2.为什么?
在与人交谈(并检查此函数的ASM代码)后,有人向Valgrind查询了发生的事情,并且他告诉我,看起来它可能是内存泄漏。我不完全知道它是如何工作的,那么为什么不返回值使它返回2?哪2个返回?
如果这些条件之一是由于某种原因,用一个简单的std ::法院真的,但没有主题是真实的,所以这不是什么“简化”与if (x > y) {...} else {...}
我还测试了什么是真正的在这里发生?
[编辑]我不想知道如何“修复”它,因为它对我来说很明显。问题是,为什么我得到2?我知道应该有一个else语句,但我很好奇没有它会发生什么
如果你启用了警告编译这一点,你会看到类似'警告:控制到达非空function'结束。如果你没有看到这样的警告,你应该改变你的编译器设置,让你看到它们,因为它非常有用。这里的关键是你没有最后的其他条款。 –
我真的不明白为什么人们想要在未定义的行为上赌博,当他们可以修复代码时... –
@Baum mit Augen建议的重复不回答为什么有问题的函数返回'2'的问题。 –