【问题标题】:What guarantees does C++ make about the ordering of character literals?C++ 对字符文字的顺序有什么保证?
【发布时间】:2023-03-18 03:44:02
【问题描述】:

C++ 对字符文字的顺序有什么保证? 基本源字符集中的字符是否有明确的顺序? (例如,'a' < 'z' 是否保证为真?'A' < 'z' 怎么样?)

【问题讨论】:

  • 一个真正邪恶的实现可能有'z' == 'a' + 25,而仍然'b'<'a'。我认为这是相当不明确的,即使考虑到 EBCDIC 和 SMS。
  • 无法保证的事实再次表明,有时支持某些实现是个好主意,这可能是“大多数”。在我看来,一个很好的例子是 Qt 坚持使用 sizeof(int) == 4... 所有他们想要支持的编译器都可以保证这一点,但当然不是全部,但如果你将自己限制在这样的实现中,它可以让生活变得更轻松。但是,您需要小心并了解您所坚持的实现,当然,还要考虑这种依赖于应用程序的限制。

标签: c++ c++11 character-encoding char character


【解决方案1】:

该标准仅保证十进制数字 09 的顺序,来自草案 C++11 标准部分 2.3[lex.charset]: p>

在源和执行基本字符集中,值 上述十进制数字列表中 0 之后的每个字符应为 比前一个值大一。

另外说(强调我的):

基本执行字符集和基本执行 宽字符集应包含基本的所有成员 源字符集,加上代表警报的控制字符, 退格和回车,加上一个空字符(分别, 空宽字符),其表示全为零。对于每个 基本执行字符集,成员的值应为 非负数且彼此不同

注意,EBCDIC 有一个不连续的字符集。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-31
    • 2023-02-20
    • 1970-01-01
    • 2013-01-06
    • 1970-01-01
    • 2015-02-17
    • 2011-09-02
    • 1970-01-01
    相关资源
    最近更新 更多