私はC言語を学習する本の「The C Programming Language」を読んでいて、算術s[i] - '0'
を見つけました。彼らはs [i]に格納されている文字の数値を返します。私はそれをかなり理解していませんでしたが、それはどのようにして減算によって値を与えることができましたか? メモこれはatoi関数で使用されます。atoi関数は、数字の文字列を数値に変換します。 おかげC文字の値の算術
C文字の値の算術
答えて
基本的に、現代のコンピュータではすべての情報が一連のバイト。 をどのように解釈するかは、各プログラムごとにバイトごとです。だから、文字は1バイト以上のもので、人間が読める文字や記号を表す数値です。たとえば、ASCIIでは、文字 'A'は数値65で表されます。
これは、Cなどの特定のプログラミング言語では、文字を数値として扱うことができるということです。例えば、Cでは式'A' + 1
は66を返します。これはB
のASCII値です(コンパイラ/プラットフォームがASCII互換の文字セットを使用していると仮定します)。
しかし、 ''A '+ 1 ==' B''というのはCでは保証されていません。これはASCIIでは当てはまりますが、すべての文字セットでは当てはまりません。 – ouah
ソースと実行の基本的な文字セットの両方で'9'
から'0'
の値は
C.
内のすべての文字セットでの連続した値であることが保証されている文字(C99、5.1.2p3)」、上記の10進数のリストの0の後の各文字の値は、前の値より1大きい値になります。
これはフードの下で'1' == '0' + 1
がchar
が数値で表されることを例えば意味します。数字0〜9の文字は、昇順の数値で格納されます。 0
を基本値として使用すると、単純な減算で0-9の文字を等価のint値に変換することができます
可能な重複:See here
まあ'0'
は、文字セットに48
を表します。したがって、'1'
、'2'
のような他の文字値を使ってそれを引いて('0'
)、'9'
- '0'
は9
となります。
注我々は両方の文字をサブしているの違い:'9'
から'0'
を、ここでは両方がchar
- 1. C++の算術演算
- 2. c#算術演算のリスト
- 3. Cの算術スライスシーケンス
- 4. enum値の算術演算
- 5. TSQL文字列連結算術オーバーフローエラー
- 6. C#のデフォルトの算術演算子
- 7. C voidポインタの算術
- 8. イメージC++の算術関数
- 9. C++配列の算術
- 10. C++チャー算術オーバーフロー
- 11. 算術式の文法
- 12. IMultiValueConverter + MultiBinding - データバインド値の逆算術計算?
- 13. 指数値の算術演算
- 14. Cプログラミング!算術演算子演算
- 15. 文字列を使用したSCSS算術演算
- 16. メディアバッファからの読み込み - ポインタの算術C++の構文
- 17. 可変入力の文字列からの算術
- 18. C配列ポインタ算術
- 19. C++算術型変換
- 20. CまたはC++の小数の算術演算?
- 21. 文字列型配列のポインタの算術演算、C++はこれをどのように扱いますか?
- 22. 算術演算VB6で同じとC#
- 23. C++のポインタの算術奇妙さ
- 24. CQL文での算術の使い方
- 25. C/C++の文字列演算
- 26. 算術符号を含む文字列を整数値に変換する
- 27. c言語のデータ型算術規則
- 28. 数値:数値が算術演算の場合は実行コマンド
- 29. 小数値フィールドの算術オーバーフローエラー
- 30. NSNumberの算術
が重複する可能性あり:http://stackoverflow.com/questions/10023180/how-does-character-representation-in-array -index-work-in-this-case –
あなたのすべてのクイック返信をありがとうございました。 私は今それを理解しています。 他の質問も投稿しました。ありがとう –