字符集中字符的顺序

时间:2012-10-11 05:29:08

标签: c++ c

是否按标准保证字符的顺序?例如,我能算一下“2”符号在字符集表中跟随'1'符号吗?或者它是特定于平台的吗?

2 个答案:

答案 0 :(得分:7)

1999年的C标准说明了字符集:

  

基本来源和基本执行字符集应具有以下成员:
  拉丁字母的26个大写字母
  ...
  拉丁字母的26个小写字母
  ...
  10位十进制数字
  0 1 2 3 4 5 6 7 8 9
  以下29个图形字符
  ...
  在源和执行基本字符集中,上述十进制数字列表中0之后的每个字符的值应大于前一个值的值。

答案 1 :(得分:5)

标准要求数字字符是顺序的,事实上,对于所有平台,我知道'0'到'9'实际上是有序和顺序的。关于字母表一般不能说同样的事情。我指向任何EBCDIC平台(AS / 400,OS390等)的样本,绝对不是这种情况。

即。你可以做到这一点:

for (char ch = '0'; ch <= '9'; ch++)

但你无法做到这一点:

for (char ch = 'a'; ch <= 'z'; ch++)

并期望后者在26次迭代中徘徊。它将取决于平台。

注意:标准中未指定保证数字之外的顺序(有序和顺序)。尽管如此,我所使用的所有平台(也就是号码)都表现出一致的订单属性,甚至是字母表,但只有类似的情况。即'a'总是“小于”'z'。但就像一个糟糕的便士,然后回到EBCDIC平台。对于标准平台,'A'始终小于'z',但不在EBCDIC中。

底线:除了数字字符之外,您无法可靠地假设关于顺序或顺序的任何,并且仍然保持纯粹的平台独立性。