在自定义库中,我看到了一个实现:

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,因为字母的数字值是不连续的(您可能已经猜到了IJRS之间存在间隙)。

值得注意的是,由于这个原因,C和C++标准仅保证字符09具有连续的数值,因此这两种方法都不严格符合标准。

09-11 12:05