类型转换
322没有对应的ascll,但是输出了B;和66输出的一样;而其他的没有则无输出;为什么322会输出B呢?
本帖最后由 jackz007 于 2022-12-25 22:14 编辑
322 是一个整型数,占用 4 个字节,写成十六进制形式是 0x000142,我们所使用电脑的 CPU 采用类 Intel 架构,多字节数值一律采用 Little-Endian 编码,整型数 0x000142 在内存中的实际储存顺序是:42 01 00 00,第一个字节 0x42 如果用 printf() 按 %c 进行显示,那就正好是字符 'B'。
字符 'B' 是通过代码中的变量 c2 打印输出的。 说白了就是小端,存储得反过来存储,所以就是 B
我还有一种方法,因为一字节可以表示256种字符,所以我们用322对256取余,得到66,故答案为66,转为char就是B 而其他的没有输出应该是输出了什么不可见字符,改一改还可能输出很像乱码的字符,当然“乱码”这种表述不准确 感谢
zhangjinxuan 发表于 2022-12-26 08:05
说白了就是小端,存储得反过来存储,所以就是 B
我还有一种方法,因为一字节可以表示256种字符,所以我 ...
感谢 jackz007 发表于 2022-12-25 22:10
322 是一个整型数,占用 4 个字节,写成十六进制形式是 0x000142,我们所使用电脑的 CPU 采用类 Inte ...
感谢
页:
[1]