字符常量的C编码

标签 c encoding binary character

我的程序员的直觉会说 c 中的字符常量(例如:'x')是使用编译它的机器的机器字符集编码的。然而,以下摘录自《The C Programming Language: ANSI C Edition》

“字符常量是用单引号括起来的一个或多个字符的序列,如'x'。只有一个字符的字符常量的值是该字符在执行时机器字符集中的数值时间。”

强调最后 3 个词。

谁能解释为什么他们会说“在执行时”。字符值肯定是在编译后的二进制文件(或 ELF、A.OUT...)中编码的?

我想知道,但无法对此提出任何合乎逻辑的解释,K&R 肯定知道他们在做什么!

最佳答案

您必须告诉编译器您将在哪个系统上运行该程序。然后它将为字符选择正确的编码。

当然,默认是在与运行编译器的系统类似的系统上运行。在那种情况下,编译时和运行时字符集将是相同的。

关于字符常量的C编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14384601/

相关文章:

c - 有人会解释如何在 linux 中使用 pci_enable_device()

Python:如何从二进制转换为 base 64 并返回?

javascript - Node - 如何将类型化数组写入具有指定字节顺序的二进制文件

c - 为什么 UTF-8 编码为 U+1xxxx 字符的 2 个字节?

c - 为什么将浮点值转换为 int 时值会发生变化

c++ - 用 C++ 文件编译 C 共享对象

MySQL - 最佳排序规则?

c# - 从 XML 声明片段 : XmlDeclaration is not supported for partial content parsing 获取 XML 编码

Java输入编码

java - 如何将超过 9 个字符的二进制字符串转换为整数?