gpt4 book ai didi

我可以两次访问函数返回值而不将其存储在变量中或再次调用函数吗?

转载 作者:太空宇宙 更新时间:2023-11-04 06:11:08 25 4
gpt4 key购买 nike

函数 id_data_valid(data) 可能返回 0 或给定的错误代码(-1、1、-2、2、...、N)。在 C 中有没有一种方法可以使用函数的返回值,而无需定义新变量或调用函数两次,如下面的示例所示?

/* Store return value */
int response = id_data_valid(data);
if (response != 0) {
return response;
}

/* Double function call */
if (id_data_valid(data) != 0) {
return id_data_valid(data);
}

最佳答案

不,这是完全不可能的。如果你想两次使用一个函数的返回值,你要么将它存储在一个变量中,要么再次调用该函数。

在 Bash 中,有一个特性是您想要的。在那里,最新的 退出代码(返回值)存储在名为$? 的内置全局变量中,但此功能在 C 中不存在,我真的看不到指向 C 之类的语言。Bash 中的类似代码段可能如下所示:

if ! my_command; then
exit "$?"
fi

但是 Bash 是一种完全不同的语言。我看不出这种功能在 C 语言中有何好处。

我会选择声明一个新变量的第一个选项。第二种选择也很好前提是该函数没有副作用。

without defining a new variable

从技术上讲,这可以通过重用旧变量来实现,但这不是一个好的解决方案。不要这样做。

您可以做的一件事就是将所有内容都放在一个范围内,以防止将来使用该变量。这是 Bathsheba 在另一个答案中显示的 C++ 代码的 C 等价物。

{ // Extra brace
int response = id_data_valid(data);
if (response != 0) {
return response;
}}

// Now response has gone out of scope, so this would be an error
if(response == 0) {

从某种意义上说,这是一件好事,因为它封装了临时变量。但另一方面,如果您真的需要这种结构,这是一个很好的迹象,表明您应该重新考虑您的设计。

关于我可以两次访问函数返回值而不将其存储在变量中或再次调用函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56460697/

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