gpt4 book ai didi

C++ - 奇怪的函数返回值

转载 作者:行者123 更新时间:2023-11-30 01:09:38 24 4
gpt4 key购买 nike

<分区>

当我突然问自己一个比我想象的要复杂一点的问题时,我正在制作一个简单的 min() 函数

我创建了一个有效的函数,并想到了省略两个数字之间的条件。这是我的功能:

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::cout 测试了这些条件之一是否出于某种原因为真,但没有一个主题是真的,所以这与使用 if (x > y) { 进行“简化”无关...} 否则 {...}

那么这里到底发生了什么?

[编辑] 我不想知道如何“修复”它,因为这对我来说很明显。问题是,为什么我得到 2?我知道应该有一个 else 语句,但我很好奇没有它会发生什么

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com