我的程序员的直觉会说 c 中的字符常量(例如:'x')是使用编译它的机器的机器字符集编码的。然而,以下摘录自《The C Programming Language: ANSI C Edition》
“字符常量是用单引号括起来的一个或多个字符的序列,如'x'。只有一个字符的字符常量的值是该字符在执行时机器字符集中的数值时间。”
强调最后 3 个词。
谁能解释为什么他们会说“在执行时”。字符值肯定是在编译后的二进制文件(或 ELF、A.OUT...)中编码的?
我想知道,但无法对此提出任何合乎逻辑的解释,K&R 肯定知道他们在做什么!
最佳答案
您必须告诉编译器您将在哪个系统上运行该程序。然后它将为字符选择正确的编码。
当然,默认是在与运行编译器的系统类似的系统上运行。在那种情况下,编译时和运行时字符集将是相同的。
关于字符常量的C编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14384601/