-2

この問題を、atoi() の出力からの型キャストの問題に要約しました。基本的に、string.c_str() を atoi() に渡すと、期待どおりに値を「計算」できます (32)。ただし、次のような型キャストを行うと:

string num = "32";
unsigned char x = (unsigned char)atoi(num.c_str());
cout << x << endl;

次に、 x は値を持たないことになります。0 か何かではなく、NULL です。何を与える?

4

2 に答える 2

3

char文字記号を表します。ストリーム経由で印刷すると、ASCII char が表示されます。32 はspaceASCII コードのシンボルのコードです。そのため、何も表示されません。

于 2012-11-07T07:15:21.820 に答える
1

値は文字を表すため、そのchar文字をストリームに出力すると、数値コードではなく、文字自体が表示されます。

印刷している文字の数値が、文字に対応する値 65 などの印刷可能な ASCII 文字で表されている場合A、コンソール/ターミナル出力に文字が表示されます。あなたの例では、数値コードは 32 で、これはスペースに対応し、表示されません。数値コード 0 は、端末によって出力されるバイナリ NUL 文字の何らかの表現になります。

于 2012-11-07T07:15:31.433 に答える