玩弄 C 或 C99,我试图了解转换、位移和十六进制值是如何工作的。
我有以下问题
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)
}
我一直在寻找解决方案来解决如何解决将十六进制值存储到 char 中的类似问题,但我无法理解的是某些存储值与它的 ASCII 值不对应的原因或位置。由于它既不是 ASCII 十六进制值、十进制值或八进制值,所以使用 printf("%X\n", c); 时打印的是什么值;