改变回报价值

时间:2014-12-03 20:10:10

标签: c++ function return

我是新功能并试图获得返回值的悬念。

我已经创建了一个打印文本的函数,但是我想让它根据实际函数中的内容返回一个值。

这是一个例子:

int function(char a)
{
    int b = 0;

    if(a == 'a')
    {
        b++;
    }

        cout << "Example";

    if(b == 1){
        return 1;
    }
    else
    {
        return 0;
    }
}

然而,在这种情况下,返回值将是&#34;卡住&#34;在0并且不会变为1.有没有办法让返回值可靠于函数中发生的事情,或者这不是它应该如何完成的?

编辑:这是我正在处理的代码。基本上它是&#34; Hangman&#34;用瑞典语。我想要的是&#34; wordCheck&#34;函数返回一个值,如果所有字母都被填充(并且单词已完成),但现在它只返回0,即使&#34; nC&#34;是4。

#include <iostream>
#include <string>
using namespace std;

int wordCheck(char word[4], int c)
{
    int nC = 0, a;
    if(c != 1)
    {
        for (int i = 0; i < 4; i++)
        {
            if (word[i] == NULL)
            {
                word[i] = '_';
            }

            else if (word[i] != '_')
            {
                nC++;
            }
        }

        cout << "Ordet: "<< word[0] << " " << word[1] << " " << word[2] << " " << word[3] << endl << endl;
    }
    if(nC == 4){
        return 1;
    }
    else
    {
        return 0;
    }
}

int main()
{
    setlocale(LC_ALL,"");

    char guess = 'l', word[50] = "bajs", letter[4] = {NULL, NULL, NULL, NULL}, null[4] = {NULL, NULL, NULL, NULL};
    int i = 0, d = wordCheck(null, 1);

    do
    {
        i++;
        system("cls");
        cout << "**********HÄNGA GUBBE**********" << endl;
        cout << "*******************************" << endl;
        cout << "*********GISSA PÅ ORDET********" << endl;
        cout << "-------------------------------" << endl << endl;
        wordCheck(letter, 0);
        cout << "Gissning " << i << " : ";
        cout << d;
        cin >> guess;

        if (guess == word[0])
        {
            letter[0] = 'B';
        }
        else if (guess == word[1])
        {
            letter[1] = 'a';
        }
        else if(guess == word[2])
        {
            letter[2] = 'j';
        }
        else if (guess == word[3])
        {
            letter[3] = 's';
        }
    } while (wordCheck(null, 1) != 1);


    system("pause");
    return 0;
}

(cout&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; d&gt;)用于调试返回值

2 个答案:

答案 0 :(得分:1)

如果我没有错,你在wordcheck函数中将值传递给c <1> ,因为你的if条件没有运行,这并没有完全增加nC的值......这就是为什么你总是得到0作为回报。

您已将1传递给int c

 wordcheck(NULL,1)

然后检查if(c!=1)然后nC++实际上没有发生,你的nC仍为0,所以在下一个if条件中你的else { return 0; }给出了返回值

答案 1 :(得分:-1)

在do while循环中,您应该发送字母变量而不是空变量,因为这是您要验证的数组。