在 int 返回函数中返回"false"
Returning "false" in an int returning function
我有一个 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。
相关文章:
- QueryWorkingSet总是返回false
- 当返回类型声明为 ListNode 时,我们是否可以返回 false<T>*
- 等于在 c++ 中返回 false
- strcmp 对于相等的字符序列返回 false
- C++ - 负数和正数之间的比较返回 false
- protobuf 的 ParseFromString 函数返回 false
- 递归函数始终返回 false
- 为什么 GetExitCodeThread() 在这里返回 FALSE?
- MFC 的 OnInit() 函数中的返回 true 和返回 false 有什么区别
- if 语句在条件为真时返回 false
- 为什么 std::isnan() 对于具有 NAN 值的双变量返回 false
- is_lock_free() 在升级到 MacPorts gcc 7.3 后返回 false
- 在 winapi 回调函数上返回 FALSE 时出现意外行为(循环被跳过?
- 如果数组中有重复的数字,如何返回'false'?
- std::is_array 当它应该返回 false 时返回 true
- 为什么pyarg_parsetuple总是返回false
- 删除为应该在哈希表中的记录返回 false 的函数
- Vulkan 和 glfwVulkanSupported() 总是返回 false
- tf2_ros::Buffer::canTransform() 为现有转换返回 False
- 出于某种原因,布尔值返回 false