printf("%c","abcdefgh"[4]);
次のプログラムの出力はe
. でも、どうだか分からない?Google と here でよく検索しましたが、このコードの正しい説明が見つかりませんでした。このコードについて私が得ている説明:
「これは1つだけを取得するためのもの
char
です。つまり、4番目char
は から始まり0
ます。したがって、答えは'e'
」です。
文字列リテラルは配列であるため、たとえば"abcdefgh"[0]
isにインデックスを付けることができます。'a'
printf("%c","abcdefgh"[4]);
フォーマット文字列は です"%c"
。これは、1 文字を出力することを意味しprintf
ます。印刷する文字は
"abcdefgh"[4]
つまり、 のインデックス4
にあるchar[9]
"abcdefgh"
文字は、文字'e'
です。
C では、文字列は配列として表現されるため、このステートメントは
printf("%c","abcdefgh"[4]);
と同等です
char a[] = "abcdefgh";
printf("%c",a[4]);
は%c
1 文字を印刷します。a
出力のインデックスが 0、b
インデックス 1、c
インデックス 2、d
インデックス 3、そして最後にインデックス 4であるため、なぜ「e」が得られるのかを説明すると、出力するためe
に選択したもの ( [4]
) が表示されます。これが、「e」が出力である理由です。
次のように記述できます。
char *tmp="abcdefgh";
printf("%c",tmp[4]);