字符集中字符的顺序

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

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

基本源和基本执行字符集都应具有以下成员:
拉丁字母的26个大写字母

拉丁字母的26个小写字母

10位十进制数字
0 1 2 3 4 5 6 7 8 9
以下29个图形字符

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

标准要求数字字符是顺序的,事实上,对于所有平台,我知道’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中。

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