-2

私の問題は、switchステートメントが指示しているように、この関数が文字だけではなく、97とyの合計として推測を返すことです。奇妙なことに、y を返すだけで、期待どおりに動作します。例えばy=4で、yを返してもらうと4が表示されます。y=4 で 'guess' を返すと 101 が表示されます。免責事項: これは完全なコードではありません。それは本当に長いです。私が抱えている唯一の問題は、この特定の関数が 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;

}

これがどうやってこのように台無しになるのか、私には本当にわかりません。前もって感謝します。

4

3 に答える 3

11

これはまさにあなたがそうするように言ったことです。標準のASCII 文字セットaは、値97などがあります。

ただし、何をしようとしているのかは完全には明らかではありません。関数の戻り値の型を として指定しましintたが、戻り値を文字リテラルに設定しています。表示できる文字を返したい場合は、戻り値の型を に変更しchar、次のようにすることをお勧めします。

char c = letterguess(blah);
std::cout << c << "\n";
于 2012-07-01T20:01:45.467 に答える
1

これは完全に理にかなっています。整数であると宣言yしたので、 を出力yすると整数が得られます。aは整数にchar マップできるcharため、の整数値が出力されます。この場合、「e」の値は 10 進数の 101 です。

于 2012-07-01T20:03:32.200 に答える
0

これを変える:

int letterguess(int z)

これに:

char letterguess(int z)

次に、戻り値を出力すると、数値ではなく文字が取得されます。

于 2012-07-01T20:03:27.920 に答える