【发布时间】:2014-04-08 02:11:54
【问题描述】:
我有一个 int 函数,它在数组中搜索值,如果找到该值,则返回数组中位置的值。如果找不到该值,我只需输入
return false;
这会给我与return 0; 相同的结果吗?
我也想知道如果我做了return NULL; 会发生什么。
【问题讨论】:
我有一个 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++ 标准部分 4.7 转换为 0 整体转换 段落 4 说(强调我的未来):
[...]如果源类型是 bool,值 false 被转换为零并且 值 true 转换为 1。
我想大多数人会觉得这很奇怪,但它是有效的。至于NULL 部分4.10 指针转换 说:
空指针常量是整数类型的整数常量表达式 (5.19) prvalue,其计算结果为零或 std::nullptr_t 类型的纯右值。 [...]
【讨论】:
0 将转换为 false 并且非零转换为 true,但不完全确定您要做什么。