C または C99 をいじって、キャスト、ビットシフト、および 16 進値がどのように機能するかを理解しようとしています。
次の問題があります
char c[4];
c[0] = 0x41;
c[1] = 0x42;
c[2] = 0x43;
c[3] = 0x00;
printf("%s", c); //prints ABC
printf("%X", c); //prints 99B11760
99B11760 はどこから来たのですか?
だから同じように...
int main() {
char a = 'a'; //ascii value is 0x41 (Mistake I made, 'a' is 0x61, 'A' is 0x41)
printf("%X\n",a); //outputs "61"? (THIS IS CORRECT OUTPUT, 'a' != 0x41)
}
Hex値をcharに格納するという同様の問題を解決する方法の解決策を見つけ続けていますが、理解に苦労しているのは、格納された値の一部がASCII値に対応していない理由または場所です。ASCII 16 進値、10 進値、8 進値のいずれでもないため、printf("%X\n", c); を使用したときに出力される値は何ですか。