内置函数将返回正数之和。

时间:2019-06-25 15:13:05

标签: c++ stl

我有一个数组,我想要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

3 个答案:

答案 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