字符常量的C编码

Max*_*ers 7 c binary encoding character

我的程序员的本能会说c中的字符常量(例如:'x')是使用编译它的机器上的机器字符集编码的.但是,以下内容来自"C编程语言:ANSI C版"

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

强调最后3个字.

任何人都可以解释为什么他们会说"在执行时".当然,字符值是在编译的二进制文件(或ELF,A.OUT ......)中编码的?

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

Bo *_*son 2

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

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

  • 不,它并没有说在执行时选择字符值,它只是说编译器将使用适合目标系统的值。这是原始 K&R 的修订版,它只是说“机器的字符集”。 (2认同)