isalpha()
函数的返回值,如果字符不是字母,则为0
,如果是字母,则为非零。很多其他ctype.h
库函数也是如此。这个函数的返回类型有什么意义呢?换句话说,为什么不只是对字母字符返回1
呢?我搜索了一下谷歌,并没有找到答案。#define NEQ(a,b) (a-b)
如果你需要在不相等时返回1
,那么你需要进行比仅仅减法多一点的工作。因此,最好不要要求函数返回1来保证性能。
int isneq = NEQ(a,2)
),则汇编代码与仅用作条件的情况不同 if (NEQ(a,2)) { ... }
,在这种情况下,如果CPU架构支持,则检查零标志就足够了。 - Ctx如果字符是字母,则返回非零整数值,否则返回零。它返回一个int
,因为这是古老的C语言默认的返回值,而且考虑到这些函数是用于条件中使用的,将返回值限制为0和1需要不必要的代码(带来很少的好处)。
您可能还注意到所有这些函数的名称都比八个字符短或等长。这同样是古老的C语言的遗留问题。函数名称不能超过8个字符。