我是新功能并试图获得返回值的悬念。
我已经创建了一个打印文本的函数,但是我想让它根据实际函数中的内容返回一个值。
这是一个例子:
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;)用于调试返回值
答案 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循环中,您应该发送字母变量而不是空变量,因为这是您要验证的数组。