c ++ - 在int返回函数中返回“false”

时间:2014-04-08 02:11:55

标签: c++ null return

我有一个int函数,它在数组中搜索一个值,如果找到该值,则返回数组中位置的值。如果找不到值,我就简单地说 return false; 这会给我与return 0;相同的结果吗? 我还想知道如果我做return NULL;会发生什么。

2 个答案:

答案 0 :(得分:2)

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

  

[...]如果源类型为bool,值false将转换为零和   值true将转换为一个。

我认为大多数人会发现这很奇怪,但它是有效的。对于NULL部分4.10 指针转换说:

  

空指针常量是整数类型的整数常量表达式(5.19)prvalue,其值为或类型为std :: nullptr_t的prvalue。 [...]

答案 1 :(得分:2)

与PHP和其他语言不同,C ++类型不会随时更改。 一种方法可以做你想要的(如果某些东西不起作用则返回false但是如果它返回一个int则返回一个int)将是一个返回类型为bool的函数,但也会在其中传递一个int引用(int&amp;)。您返回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;
}