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

时间:2012-07-01 19:59:57

标签: 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;

}

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

3 个答案:

答案 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)

然后当你输出返回值时,你会得到字母而不是数字值。