0

私は配列を持っています:

int arr[]={'1','2','4','8','16','32','64','128'};

そして、私はそれをこの行で呼んでいます:

a=arr[a];

ただし、目的の出力が得られません。入力は期待どおりですが(これを確認しましたが、0〜7になります)、49,50,52,56,49,51,54,49入力に応じて出力が出力されます。私は何を間違えましたか?

編集:引用符はASCIIを意味します。簡単なことを見逃していたことはわかっていました。

4

4 に答える 4

2

出力は正しいです。'1'49は、たとえば配列の最初のエントリとして持っている文字のASCII値です。

于 2013-03-18T15:31:24.577 に答える
1

配列の初期化子は値ではなく文字リテラルでintあるため、配列には各文字リテラルの数値が入力されます(などのマルチバイト文字リテラル'32'は許可されますが、その値は実装定義です。割り当ての結果を判別する方法を参照してください。複数文字のchar定数からchar変数へ?)。

目的の出力を取得するには、intリテラルを使用します。

int arr[]={1,2,4,8,16,32,64,128};
于 2013-03-18T15:31:09.757 に答える
0

この宣言int arr[]={'1','2','4','8','16','32','64','128'};では、文字列として宣言しているため、ASCII 値を格納しています。したがって、49for 150for 252for 456for 849for 1of 1651for 3of 3254for 6of 64、および49for 1of128の値は、配列にインデックスを付けるときに取得されます。

于 2013-03-18T15:33:11.100 に答える
0

int arr[]={'1','2','4','8','16','32','64','128'};arr配列をcharではなくとして 宣言する必要がありますint

文字ではなく数字を取得する正確な理由は、使用している出力ライブラリがintパラメーターで呼び出されるためです。それから、ライブラリは、与えられたデータを解釈して数値として表示する必要があることを理解します。

また、取得している数値は、配列内の値に相当するASCIIまたは数値です。

于 2013-03-18T15:34:52.533 に答える