在 int 返回函数中返回"false"

Returning "false" in an int returning function

本文关键字:返回 false 函数 int      更新时间:2023-10-16

我有一个 int 函数,可以在数组中搜索值,如果找到该值,则返回数组中位置的值。如果找不到值,我只需将 return false;这会给我和return 0;一样的结果吗?我还想知道如果我这样做return NULL;会发生什么。

与 PHP 和其他语言不同,C++类型不会即时更改。一种做你想做的事情的方法(如果某些东西不起作用,则返回 false,但如果它起作用,则返回一个 int)是用返回类型的 bool 定义函数,但也在其中传递一个 int 引用 (int&)。返回 true 或 false,并将引用分配给正确的值。然后,在调用方中,查看是否返回了 true,然后使用该值。

bool DoSomething(int input, int& output)
{
    //Calculations here
    if(/*successful*/)
    {
        output = value;
        return true;
    }
    output = 0; //any value really
    return false;
}
// elsewhere
int x = 5;
int result = 0;
if(DoSomething(x, result))
{
    std::cout << "The value is " << result << std::endl;
}
else
{
    std::cout << "Something went wrong" << std::endl;
}

false将从草案C++标准部分转换为0 4.7 积分转换第4 段,其中说(强调我的前进):

[...]如果源类型为 bool,则值 false 将转换为零,并且 值 true 将转换为 1。

我想大多数人会觉得这很奇怪,但它是有效的。至于NULL 4.10指针转换的部分 说:

空指针常量是整数类型的整数常量表达式 (5.19) prvalue,其计算结果为零或 std::nullptr_t 类型的 prvalue。