gpt4 book ai didi

c - 递归函数: why some compailers dont like return in conditions

转载 作者:行者123 更新时间:2023-11-30 19:42:42 28 4
gpt4 key购买 nike

一个非常普遍的问题。我在 C 上工作,有时当我使用递归算法时,有时我只想在“if”中设置“返回值”。而且我没有“外部”返回,一些编译器不喜欢它,就像在 CodeBlocks 环境中它将其定义为编译错误,例如在 microsoft Visual Studio 中它不喜欢它。我不想弄乱我的代码,所以我会有一个外部返回,因为在复杂的算法中这可能很困难,但我知道就我而言,它适用于我需要的所有示例。

所以,据我在教育项目中的理解,在大多数情况下这不会成为问题(如果我错了,请纠正我 - 我的意思是,如果我知道我在算法中做了什么以及它适用于哪些输入)它不会成为问题,但一般来说,据我了解,如果我编写没有“外部”返回的代码,我可能会遇到问题,如果在某些情况下,我没有想到它们,它不会返回任何值或会返回垃圾,我是对的吗?

有人可以给我有关这方面的其他信息吗?

最佳答案

我想你的意思是这样的:

int foo() {
...
if (...) {
return ...;
}
...
// should never reach here so no return
}

Failing to return a value from a function that has a non-void return type results in undefined behavior, but is not a semantic error.

未定义的行为意味着任何事情都可能发生:程序可能崩溃,函数可以(似乎)实际返回一些东西。

解决这个问题的一种方法可能是:

int foo() {
...
if (...) {
return ...;
}
...
assert(0, "should never reach here");
return 0;
}

另请参阅Why “not all control paths return a value” is warning and not an error?

关于c - 递归函数: why some compailers dont like return in conditions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31115126/

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