私はフォーラムにまだ参加していませんので、事前にフォーラムの礼儀の問題についてお詫び申し上げます。int/char配列/文字列の相違点
int
アレイとchar
アレイの違いを理解するのに問題があります。
私は最近、最初にchar
アレイを使用して数字の文字列を格納し、その後特定の文字を呼び出して、製品を見つけるためにint
操作を使用しようとしたProject Euler問題のプログラムを作成しました。私がチャー文字列を使用したとき、私は、まったく大きな製品を得ました、明らかに間違っていました。私が文字(str[n]
)としてコンパイルされると思ったものを整数インライン((int)str[n]
)に変換したとしても、まったく同じことをしました。私が実際に整数配列を使用したときだけ、それは機能しました。これは動作しませんでしたchar
文字列
char str[21] = "73167176531330624919";
ため
を次のように
コードです。私は約40kだったはずの答えに対して約1.5兆の答えを得ました。
int
配列
int str[] = {7,3,1,6,7,1,7,6,5,3,1,3,3,0,6,2,4,9,1,9};
のためにこの仕事をやったことです。私はインラインタイプのキャスティングもやっていました。
これらのことがうまくいかなかった理由についての説明と、これらのアイデアをよりよく理解できるような何かが理解できます。役に立つものへのリンクも同様です。私は文字列と配列とポインターを自分で調べています(私は高校時代に自分自身を教えています)が、コンセプトはまだ混乱しています。
Cの文字列が自動的に配列として格納されるのですか、そうすることは可能でしょうか?
おそらく[この表](http://www.asciitable.com)は、ASCII文字をint型の値として扱っているかどうかを明らかにするかもしれません。そして、「配列」によって、基礎となる文字データを含む連続したメモリを意味する場合、暗黙の0ターミネータが付けられた状態で格納されます。 – WhozCraig
そのテーブルはchar '0'がint値48に対応すると言っていますか? – Charles
はい、値は符号なしですが、これは重要ではないように見えるかもしれませんが、拡張ASCII文字を処理する必要がある場合はその値になります(その下の表を参照)。あなたは正しい道を歩いています。以下のいくつかの答えがこれをよりよく説明している。また、これは( '0' == 48)ASCIIの場合にのみ真であることに注意してください。他のシステム依存の文字セット([EBCDIC](http://en.wikipedia.org/wiki/EBCDIC)など)もあります。 – WhozCraig