函数返回不同的值C ++

时间:2015-06-12 00:25:06

标签: c++

我需要创建一个函数,让它命名为fun1,它将返回2个值。它每10次返回A,否则返回B

然后,在另一个函数中,我们称之为fun2,我需要检查 if(fun1=="A") return aVariableIneed; else return bVariableIneed;

使用string / int /任何返回值的函数对我来说都不起作用,因为它总是需要一个参数,并且只返回一个参数。我认为无效是要走的路。我曾考虑过使用数组,但我对此并不十分肯定。

提前致谢。

4 个答案:

答案 0 :(得分:1)

您可以使用传递引用来返回参数中的值。

void fun1( int &firstReturnVal, int &secondReturnVal, int pass ) {
   firstReturnVal = ...; // will be viewable by caller
   secondReturnVal = ...; // will be viewable by caller
}

int main() {
   int a, b;
   fun1( a, b, 2 );
   std::cout << "return values: " << a << b << endl;
}

答案 1 :(得分:1)

“它将每10次返回A,否则它将返回B.”

如果你想一次只返回一个值,但要记住已调用函数的次数,你要找的是一个静态变量。 您可以使用此静态变量在调用之间维护其值,以计算已调用函数的次数,然后使用if-else语句确定应返回哪一个。

如果你想一次返回多个值,除了返回一个数组(它将返回,实际上只返回一个元素,指向数组的指针,但你可以存储多个数组)时,没有办法做到这一点你想要在那个数组中的元素然后在函数之外检索它们

答案 2 :(得分:1)

int fun1()
{
   static int times = 0;
   times++;
   if(times % 10 == 0)
   {
       //return 10 if on multiples of 10
       return 10;
   }

   //return something else.
   return 1;
}

对于复杂的东西,请使用其他。

我认为这就是你所追求的,但你可能想要回顾静态和任何看起来不熟悉的东西。你的学校/ tut /老师只提供解决作业所需的最低限度,然后教授“简单方法”,通常的做法

答案 3 :(得分:0)

C ++是一种强类型语言,因此首先需要确定的是“A”和“B”是否是同一类型。除非这些东西可以很容易地转换,否则你不能拥有一个在没有一些恶作剧的情况下返回两个不同东西的函数。

long f(bool condition) {
    if (condition)
        return 2.0; // type double
    else
        return 1; // type int
}

编译器可能会生成有关此代码的警告,但它会编译。但是,返回的内容由函数的指纹决定:此函数返回long,因此2.0将转换为2,而2将从int转换为long。

int f(bool condition) {
    if (condition)
        return 1;
    else
        return "hello"; // illegal: no conversion possible
}

下一步:您指定的这些符号表示字符('A')字符串("A")或在其他地方定义的变量,并命名为 capital A ({{1 }})。

我只能假设,但似乎你想要一个角色A。如果你对Python等其他语言有一定的了解,你可能没有意识到字符A 包含字符A 的字符串之间存在很大差异,'A'

根据您在课程中的早期程度,您可能需要的是这样的:

'A' vs "A"

我们不确定是否需要int times = 0; // caveat: this value can become negative. // caveat: this value can only hold positive numbers 0 thru 2^31 char fn1() { ++times; if (times < 10) return 'A'; else { //times = 0; // reset for next time return 'B'; } } 。如果是的话,我希望这项任务“每10次”而不仅仅是“和第十次”。

现在我们可以写times = 0

fn2

我们可以把所有这些放在这样的程序中:

int fn2() {
    if (fn1() == 'A') {
        return aVariableINeed;
    } else {
        return bVariableINeed;
    }
}

然而,这不是健康的现代C ++。这是“你的教授可能在你的舞台上寻找的东西”。

#include <iostream>

int aVariableINeed = 10;
int bVariableINeed = 20;

int times = 0;

char fn1() {
    ++times;
    if (times < 10)
        return 'A';
    else {
        return 'B';
    }
}

int fn2() {
    if (fn1() == 'A') {
        return aVariableINeed;
    } else {
        return bVariableINeed;
    }
}

int main() {
    for (int i = 0; i < 10; ++i) {
        std::cout << i << ": " << fn2() << "\n";
    }
}