我是否可以始终假定字符';0';至';9';以任意C字符编码顺序显示

我是否可以始终假定字符';0';至';9';以任意C字符编码顺序显示,c,character-encoding,c-strings,C,Character Encoding,C Strings,我正在用C写一个程序,把一些字符串转换成整数。我以前实现这一点的方式是这样的 int number = (character - '0'); 这对我来说总是非常有效,但我开始思考,是否有任何系统使用一些模糊的字符编码,其中字符“0”到“9”不按顺序依次出现?此代码假定“1”跟在“0”后面,“2”跟在“1”后面,依此类推,但是否存在这样的情况?是的,这是由C标准保证的 5.2.1第3段规定: 在源和执行基本字符集中 上述十进制数字列表中0后的每个字符应为 一个大于上一个的值 这一保证是可能的,因

我正在用C写一个程序,把一些字符串转换成整数。我以前实现这一点的方式是这样的

int number = (character - '0');

这对我来说总是非常有效,但我开始思考,是否有任何系统使用一些模糊的字符编码,其中字符“0”到“9”不按顺序依次出现?此代码假定“1”跟在“0”后面,“2”跟在“1”后面,依此类推,但是否存在这样的情况?

是的,这是由C标准保证的

5.2.1第3段规定:

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

这一保证是可能的,因为ASCII和EBCDIC恰好都具有此属性


请注意,信件没有相应的保证;在中,字母没有连续的代码。

是的,这是由C标准保证的

5.2.1第3段规定:

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

这一保证是可能的,因为ASCII和EBCDIC恰好都具有此属性


请注意,信件没有相应的保证;在中,字母没有连续的代码。

Baudot代码有1..9,然后是0。这就是为什么现在没人用波多特的原因之一。ASCII、EBCDIC和Unicode都可以。@LeedianelCrocker:这与缺少小写字母和一些必需的标点符号一起,意味着符合标准的C实现不能使用Baudot代码。Baudot代码有1..9,然后是0。这就是为什么现在没人用波多特的原因之一。ASCII、EBCDIC和Unicode都可以。@LeedianelCrocker:这一点,再加上缺少小写字母和一些必需的标点符号,意味着符合要求的C实现不能使用Baudot代码。