システムでは、文字 '1'は49としてエンコードされます。Cでは '1' ... '9'あなたのシステム '9'でその順序と連続的なものは57としてエンコードされています。したがって、 '91'は57に続いて49でエンコードされます。16進数では、この0x39の後に0x31が続きます。ビッグエンディアンのバイト順序で2バイト整数(おそらくshort
[別名short int
])をビッグエンディアンのバイト順序とみなす場合、0x3931または14641です。したがって、マシンはビッグエンディアンのバイト順序を使用します。
「91」int
がchar
より大きく、char
である、私のシステムで値14641.とINTので、その範囲外の整数でchar
を割り当てる128 -128である、コンパイラの警告を与えます。
これで、フォーマットされた印刷呼び出しでは、通常の長さの整数である "%d"形式指定子が使用されます。これは、システム上の整数が10進数に変換されて出力される多くのバイトを変換することを意味します。それは整数としてこれらの値を印刷しているので、しかし、あなたはそれをchar
値を渡している、または91および14641.
あなたは、おそらくより、このようなものを意味する:
char[] strVal1 = "1";
char[] strVal2 = "91";
printf("%s\n", strVal1);
printf("%s", strVal2);
ありがとうございました。 !! :) – smartnerd