【发布时间】:2014-03-08 18:10:01
【问题描述】:
我目前正在编写一个涉及处理字节的 C 程序。说到字节,我真的很困惑以下问题。
字符是否通过其 ascii 代码存储在内存中?假设“A”的 anscii 代码为 65。所以它在内存中的存储方式与整数 65 相同?
如果是,机器如何区分字符和整数?
如果字符由 ascii 代码存储,则 ascii 代码是一个整数。一个整数至少要占2个字节,怎么一个字符只占1个字节?
最后一个是关于不同架构上的整数。在 16 位机器上,如果 1 存储为 000...0001,那么在 32 位机器上,1 是否仍以前面加 0 的方式存储 1?
【问题讨论】:
-
机器不区分不同的类型。 C++ 编译器可以。
-
@ValekHalfHeart 编译器是否通过声明类型来区分?
-
是的,这就是声明类型的用途。
-
有关字符编码(UTF-8、UTF-16、UCS-2 等)的讨论,请参阅stackoverflow.com/questions/11107608/…