是否按标准保证字符的顺序?例如,我能算一下“2”符号在字符集表中跟随'1'符号吗?或者它是特定于平台的吗?
答案 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中。
底线:除了数字字符之外,您无法可靠地假设关于顺序或顺序的任何,并且仍然保持纯粹的平台独立性。