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

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,JR,S之间存在差距).

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

C++相关问答推荐

如何在C中的空指针函数中传递浮点值

如何将一个enum类型类型转换为另一个类型?

C/C++中的状态库

编译的时候g++通常会比GCC慢很多吗?

如何将字符串传递给函数并返回在C中更改的相同字符串?

将常量转换为指针会增加.数据大小增加1000字节

在C++中使用函数指针的正确语法

在基本OpenGL纹理四边形中的一个三角形中进行渲染

Kdb:仅升级指定的列

FRIDA-服务器成为端口扫描的目标?

我在反转双向链表时遇到问题

Tic-tac-toe:从文件加载存储

这个空指针类型的转换是有效代码还是恶意代码?

表达式x&;&;(~x)应该返回1还是0?它依赖于编译器吗?

在文件描述符上设置FD_CLOEXEC与将其传递给POSIX_SPOWN_FILE_ACTIONS_ADCLOSE有区别吗?

分配给静态变量和动态变量的位置之间有区别吗?

在列表中查找素数

无法将字符串文字分配给 C 中的字符数组

在 C 中传递参数时出现整数溢出

SSE 向量与 Epsilon 的比较