我的问题是,当switch语句指示时,此函数将guess返回为97和y的总和,而不仅仅是字母。奇怪的是,当我拥有它只是返回y时,它正如我所期望的那样工作。例如,当y = 4,并且我返回y时,显示4。当y = 4并且返回'guess'时,显示101。免责声明:这不是完整的代码。它真的很长,我觉得多余,因为我唯一的问题是当这个特定的函数返回'guess'时,即使它返回y也没有。如果所有代码都有用,我会很乐意提出来。
int letterguess(int z){
char guess;
int y;
y=letters[0][z];
switch (y){
case 0:
guess='a';
break;
case 1:
guess='b';
break;
case 2:
guess='c';
break;
case 3:
guess='d';
break;
case 4:
guess='e';
break;
case 5:
guess='f';
break;
case 6:
guess='g';
break;
case 7:
guess='h';
break;
case 8:
guess='i';
break;
case 9:
guess='j';
break;
case 10:
guess='k';
break;
case 11:
guess='l';
break;
case 12:
guess='m';
break;
case 13:
guess='n';
break;
case 14:
guess='o';
break;
case 15:
guess='p';
break;
case 16:
guess='q';
break;
case 17:
guess='r';
break;
case 18:
guess='s';
break;
case 19:
guess='t';
break;
case 20:
guess='u';
break;
case 21:
guess='v';
break;
case 22:
guess='w';
break;
case 23:
guess='y';
break;
case 24:
guess='y';
break;
case 25:
guess='z';
break;
}
return guess;
}
我真的看不出这可能会像这样搞砸了。提前谢谢。
答案 0 :(得分:11)
这正是你告诉它要做的。在标准ASCII character set中,a
具有值97
等
但是,你正在尝试做什么并不完全清楚。您已将函数的返回类型指定为int
,但您将返回值设置为字符文字。如果您想要返回一个可以显示的字符,我建议您将返回类型更改为char
,并执行以下操作:
char c = letterguess(blah);
std::cout << c << "\n";
答案 1 :(得分:1)
这很有道理。由于您已将y
声明为整数,因此在输出y
时,您将获得一个整数。由于char
can be mapped为整数,char
的整数值是输出的值。在这种情况下,'e'的值是十进制101。
答案 2 :(得分:0)
改变这个:
int letterguess(int z)
到此:
char letterguess(int z)
然后当你输出返回值时,你会得到字母而不是数字值。