在自定义库中,我看到了一个实现:
inline int is_upper_alpha(char chValue)
{
if (((chValue >= 'A') && (chValue <= 'I')) ||
((chValue >= 'J') && (chValue <= 'R')) ||
((chValue >= 'S') && (chValue <= 'Z')))
return 1;
return 0;
}
这是Easter egg还是与标准C/C++方法相比有什么优点?
inline int is_upper_alpha(char chValue)
{
return ((chValue >= 'A') && (chValue <= 'Z'));
}
最佳答案
该代码的作者大概必须在某些时候支持EBCDIC,因为字母的数字值是不连续的(您可能已经猜到了I
,J
和R
,S
之间存在间隙)。
值得注意的是,由于这个原因,C和C++标准仅保证字符0
到9
具有连续的数值,因此这两种方法都不严格符合标准。