アプリ版:「スタンプのみでお礼する」機能のリリースについて

c言語について

array[i]-‘0’

これってどーゆー意味ですか?

(ちなみに16進数を10進数にプログラムをホーナー法ゆ用いて作っていて、arrayは入力した16進数の文字列です。)

A 回答 (5件)

array[i]に’3’って文字が格納されているなら、それを3という数値に直してる。



コンピュータ上では、文字には文字コードが割り当てられています。

IT用語辞典 e-Words - ASCIIコード表
https://e-words.jp/p/r-ascii.html

にあるように、
文字の'3'なら、16進数の0x33、10進数の51
文字の'5'なら、16進数の0x35、10進数の53

そのまま文字を足し算とかしようとすると、'3'+'5'は、51+53が計算されて、変な数になります。

なので、'3'から'0'を引き算することで、51-48=3となって、普通に計算できる数値の3に変換できます。
    • good
    • 0

たぶんなんにも考えないで


array[i] - 'A' + 10
とか書いてるんじゃないですかね>#4.

"ABCDEF" って文字列リテラルから探す, なんてやってないと思う.
    • good
    • 0

皆さんの答えの通りだと思いますが、AからFまではどのように処理するのかが気になります。

    • good
    • 0

字面の通りに解釈するなら, array[i] から「0 という文字の文字コード」を引いている.



C では用いる文字コードに依らず「0 から 9 まではこの順に連続する文字コードを持つ」と規定されている. つまり array[i] が「0 から 9 までのいずれかの文字」であるなら, そこから '0' を引くと「その文字の表す整数値」が得られる.
    • good
    • 1

'0' == 0x30 です


https://www.fileformat.info/info/unicode/char/00 …

U+0030 から U+0039 までが DIGIT の文字です
https://www.fileformat.info/info/unicode/categor …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!