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]);
は%c1 文字を印刷します。a出力のインデックスが 0、bインデックス 1、cインデックス 2、dインデックス 3、そして最後にインデックス 4であるため、なぜ「e」が得られるのかを説明すると、出力するためeに選択したもの ( [4]) が表示されます。これが、「e」が出力である理由です。
次のように記述できます。
char *tmp="abcdefgh";
printf("%c",tmp[4]);