c – 是否需要具有连续数值的字符数字[‘0’..’9′]?

必须通过C实现将chars’0′ – ‘9’设置为具有连续的数值,即:

'0' -> 0+n
'1' -> 1+n
 m  -> m+n
'9' -> 9+n

我在文件中没有提到的isdigit([分类](22.3.3.1字符分类))*,
也不能在本地文档中找到它(但也许我看起来不够)。

在2.3个字符集中,我们发现

The basic source character set consists of 96 characters: the space character, the control characters representing
horizontal tab, vertical tab, form feed, and new-line, plus the following 91 graphical characters

但是它没有提到任何订单(但也许我看起来不够用)。

*:有趣的脚注在那里:

When used in a loop, it is faster to cache the ctype<> facet and use it directly [instead of isdigit() et al, end comment], or use the vector form of ctype<>::is.

事实上看起来不够硬:2.3。字符集,项目3:

In both the source and execution basic character sets, the value of each character after 0 in the
above list of decimal digits shall be one greater than the value of the previous.

这是上面的十进制数列表:

0 1 2 3 4 5 6 7 8 9

因此,实现必须使用十进制数字具有连续表示形式的字符集。因此,您依赖此属性的优化是安全的;然而,您依赖于其他数字(例如“a”..“z”)的符号的优化不是便携式w.r.t.到标准(另见标题< cctype>)。如果这样做,请确保声明该属性。

http://stackoverflow.com/questions/9416926/are-the-character-digits-0-9-required-to-have-contiguous-numeric-values

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c – 是否需要具有连续数值的字符数字[‘0’..’9′]?