【问题标题】:In C++, the char variables belong to which character set, source or execution character set?在 C++ 中,char 变量属于哪个字符集、源字符集或执行字符集?
【发布时间】:2013-11-26 21:44:59
【问题描述】:

C++11 §3.9.1 声明为字符 (char) 的对象应足够大以存储实现的基本字符集的任何成员。

实现的基本字符集指示哪个字符集?基本源或执行字符集?

【问题讨论】:

  • 编译器的目标环境。如果您以 PDP-11 为目标,您将拥有 6 位字符,其中包含用于字符文字的 EBDCDIC 字符集。如果您以 Linux 或 Windows 为目标,您可能会使用 8 位字符和字符文字的 ASCII 字符集。

标签: c++ char set character


【解决方案1】:

从技术上讲,它是由实现定义的。在 practice 中,char 是 8 位,默认为有符号或无符号。同样在实践中,US ASCII 已形成您可能遇到的常用实现中的最低公分母。

这只是最小的公分母。它会忽略宽字符(即wchar_t)或美国 ASCII 以外的其他编码。

该标准允许广泛的实现,包括char 超过 8 位的实现。它们只是不是特别常见。

另外需要注意的是源字符集和执行字符集不需要匹配。与自托管编译器相比,交叉编译器(例如嵌入式系统)更可能出现这种情况。同样,我不认为标准将两者联系在一起。

【讨论】:

  • 感谢您的回答!但我不清楚“实施”的确切含义。是指C++编译器的实现吗?
  • 是的。这正是它的意思。因此,如果您选择 g++、LLVM 或 Microsoft 的 Visual C++,例如,它们中的每一个都是一个实现。
猜你喜欢
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 2011-09-26
  • 2018-12-05
  • 2015-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多