C++ switch语句返回奇怪的值

use*_*214 -2 c++ switch-statement

我的问题是,当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;

}
Run Code Online (Sandbox Code Playgroud)

我真的看不出这可能会像这样搞砸了.提前致谢.

Oli*_*rth 11

这正是你告诉它要做的.在标准ASCII字符集中,a具有值97等.

这不是完全清楚你在做什么尝试做的,虽然.您已将函数的返回类型指定为int,但是您将返回值设置为字符文字.如果你想返回一个你可以显示的字符,我建议你将返回类型更改为char,并执行以下操作:

char c = letterguess(blah);
std::cout << c << "\n";
Run Code Online (Sandbox Code Playgroud)

  • @ user1418214 - 它返回字符'a'.您只需将其打印为字符,而不是int值. (2认同)