我有一个数组,我想要stl函数,该函数可以返回正数之和和负数之和。
#include <iostream>
#include <functional>
#include <numeric>
int myfunction (int x, int y)
{
if(y>0){
return x+y;
}
}
int main () {
int init = 0;
int numbers[] = {5,10,20,-34,56,-67,-32,16};
std::cout << "using custom function: ";
std::cout << std::accumulate (numbers, numbers+8, init, myfunction);
std::cout << '\n';
}
输出是即将到来的垃圾值。
使用自定义功能:4196215
答案 0 :(得分:1)
“输出即将到来的垃圾值”的原因是,当y <= 0
返回某个垃圾值(即没有return语句)时。
int myfunction (int x, int y)
{
if(y>0){
return x+y;
}
// <<== you need to return something here, too
}
在这种情况下,我会说return x
,但这不适用于第一个元素为<= 0
的数组
答案 1 :(得分:0)
您可能正在寻找符合以下条件的东西:
int myfunction (int x, int y)
{
return x + std::max(y, 0);
}
答案 2 :(得分:0)
如果函数的签名返回类型不同于Dim c As Control
For Each c In Me.Controls
If TypeName(c) = "TextBox" Then
Dim TempTextbox As Access.TextBox
Set TempTextbox = c
TempTextbox.BackColor = 255
End If
Next
,那么您需要确保始终(除非发生异常事件),无论您使用哪种路径,都返回一些值在执行过程中。
您的函数无法执行此操作,因为void
什么也不返回。
您可以通过以下操作对其进行修复:
y<=0