[C言語] printfで各種検証 シングルクォート LLDB

[M1 Mac, Big Sur 11.6.8, clang 13.0.0, NO IDE]

printfでダブルクォート、シングルクォートと、&ありなしの組み合わせにて出力してみました。

シングルクォートでは1文字を囲むことになっていますが、複数文字を囲むと全体で1文字と解釈されリトルエンディアンのルールにより下位アドレスから順に格納されるため並びが逆転します。

C言語についてはおびただしい数のネット情報がありますが、検証する必要がないにしても誰もこういったお遊びをしていませんでした。面白いネタだと思うのですが…

#include <stdio.h>

int main() {
    char c1[] = "abc";
    char* c2 = "def";
    char* c3 = 'ghi';

    printf("c1: %s\n", c1);
    printf("&c1: %s\n", &c1);

    printf("c2: %s\n", c2);
    printf("&c2: %s\n", &c2);

    // printf("c3: %s\n", c3); // Segmentation fault: 11
    printf("&c3: %s\n", &c3);

    return 0;
}
--------------------------------------------------
出力
--------------------------------------------------
c1: abc
&c1: abc
c2: def
&c2: P? // ポインタをASCIIコードとして解釈し出力
&c3: ihg // ghiの並びが逆転する