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