4

今日、このコード行に出くわしました:

int c = (int)'c';

charaを an にキャストできることを知りませんでしたint。それでテストしてみると、a=97、b=98、c=99、d=100 など…

なぜ「a」は 97 なのですか? それらの数字は何に関係していますか?

4

5 に答える 5

11

他の誰もが (これまでのところ) ASCII を参照しています。これは非常に限定されたビューです。これは に対して'a'は機能しますが、アクセントなどがあるものには機能しません。これは で非常に簡単に表すことができますchar

Acharは符号なしの 16 ビット整数であり、UTF-16 コード単位です。通常、これは Unicode 文字に相当しますが、常にではありません。単一の完全な文字に対して複数のコード単位が必要になる場合があります。詳細については、ドキュメントを参照しSystem.Charてください。

charからへの暗黙的な変換int(コードでキャストは必要ありません) は、その 16 ビットの符号なし整数を 32 ビットの符号付き整数に自然で損失のない方法で変換するだけですushort

ASCII のすべての有効な文字は、UTF-16 では同じ値を持つことに注意してください。そのため、例が ASCII セットからのものだけである場合、この 2 つがしばしば混同されます。

于 2013-04-09T15:39:05.980 に答える
7

97文字のUTF-16コード単位値ですa

基本的に、この数値は特定の文字の UTF-16 コード単位に関連しています。

于 2013-04-09T15:36:53.140 に答える
-1

これらは対応する ASCII の 10 進数表現です: http://www.asciitable.com/index/asciifull.gif したがって、「a」は 97 になります。

于 2013-04-09T15:37:49.510 に答える