0

現在、「Beginning Android Games」という本を読んでいますが、次のコードを理解するのに問題があります。

int srcX = 0;
int srcWidth = 0;
if (ch == '.') {
  srcX = 200; //Jump to position 200 px in the bitmap
  srcWidth = 10; //A dot is only 10 px
} else {
  srcX = (ch - '0') * 20;
  srcWidth = 20;
}

ハイスコ​​アとプレイ中のスコアを表示するために使用される 0 から 9 までの数字のビットマップがあります。この変数srcXは、対応する数値のビットマップ内の位置 (ピクセル単位) を見つけるために使用されます。

Ch は文字変数であり、文字列内の現在の文字 (数字、スペース、またはドット) を保持するために使用されます。

私の問題は、ユニコード番号の代わりに「実際の」番号を取得するために (ch - '0') を使用する必要がある理由がわからないことです。たとえばif ch = "1", (ch - '0')、結果は 1 です。「- '0'」を使用しない場合、ユニコードは 49 になります。

もちろん、ユニコードから「実数」への変換を行うためには、何かが起こらなければなりません。しかし、なぜ結果 (ch - '0') は 49 ではなく 1 になるのでしょうか。

皆さんが私の問題を理解し、助けてくれることを願っています。

前もって感謝します!

4

1 に答える 1

1

文字「0」には Unicode (値 0..127 の ASCII と同じ) value があります48
'0'、'1'、'2'、'3'、'4'、'5'、'6'、'7'、'8'、'9'
の文字値
は 48、49、..、 57

この文字の 1 つを値 (「0」 -> 0) に変換する場合は、次のいずれかを実行できます。

c-48;

また

c-'0' 

どちらも同じです。

于 2013-01-24T16:36:35.183 に答える