对C语言islower、isupper、isdigit函数的测试
今天朋友问起了这三个函数,我就帮忙测试了下,测试后发现谭浩强第四版课本附录上上讲的不是很严谨.
我们先看下这三个函数介绍:
谭浩强第四版课本附录第396页上这样介绍:
函数名 | 函数原型 | 功能 | 返回值 | 包含文件 |
islower |
int islower(int ch); | 检查ch是否是小写字母(a-z) | 是则返回1;不是返回0 | ctype.h |
isupper |
int isupper(int ch); | 检查ch是否是大写字母(A-Z) | 是则返回1;不是返回0 | ctype.h |
isdigit | int isdigit(int ch); | 检查ch是否是数字(0-9) | 是则返回1;不是返回0 | ctype.h |
百度百科这样介绍:
函数名 | 函数原型 | 功能 | 返回值 | 包含文件 |
islower |
int islower(int ch); | 检查ch是否是小写字母(a-z) | 是则返回TRUE,否则返回NULL(0)。 | ctype.h |
isupper |
int isupper(int ch); | 检查ch是否是大写字母(A-Z) | 是则返回非零值,否则返回零 | ctype.h |
isdigit | int isdigit(int ch); | 检查ch是否是数字(0-9) | 是则返回TRUE,否则返回NULL(0)。 | ctype.h |
而我的测试结果:
函数名 | 函数原型 | 功能 | 返回值 | 包含文件 |
islower |
int islower(int ch); |
检查ch是否是小写字母 (a-z) |
vc++6.0是小写字母则返回2, 否则返回NULL(0)。
codeblocks是小写字母则返回2, 否则返回NULL(0)。
TC是小写字母则返回8, 否则其他返回0 |
ctype.h |
isupper |
int isupper(int ch); |
检查ch是否是大写字母 (A-Z) |
vc++6.0大写字母是则返回1, 否则返回NULL(0)。
codeblocks是则返回0, 否则小写字母返回2, 数字返回0,特殊符号返回0
TC是大写字母则返回4, 否则小写字母返回0, 数字返回0 特殊符号返回0 |
ctype.h |
isdigit | int isdigit(int ch); | 检查ch是否是数字(0-9) |
VC++6.0是数字则返回4, 否则返回NULL(0)。
codeblocks是数字则返回0, 否则小写字母返回2 ,大写字母返回0, 特殊符号返回0
TC是数字则返回2, 否则大写字母返回0, 小写字母返回0 特殊符号返回0 |
ctype.h |
测试数据:
百度上说:int islower(int c)函数判断是否是小写字母,是则返回true,否则返回0,
谭浩强书上说 int islower(int c)函数判断是否是小写字母,是则返回1,否则返回0,
而我使用 VC++6.0测试结果却显示,int islower(int c)函数判断是否是小写字母,是则返回2,否则返回0.
codeblocks测试结果却显示,int islower(int c)函数判断是否是小写字母,是则返回2,否则返回0.
TC编译器测试结果显示:int islower(int c)函数判断是否是小写字母,是则返回8,否则返回0.
测试代码如下:
/************* 测试环境:VC++6.0 测试人:星云 测试时间:2015-1-10 ***************/ #include<stdio.h> #include<ctype.h> int main() { char b; int a; printf("请输入第一个字符:"); scanf("%c",&b); a=islower(b);//判断是否是小写字母,是则返回true,否则返回0 // VC++6.0测试结果却显示,int islower(int c)函数判断是否是小写字母,是则返回2,否则返回0. //codeblocks测试结果却显示,int islower(int c)函数判断是否是小写字母,是则返回2,否则返回0. //TC编译器测试结果显示:int islower(int c)函数判断是否是小写字母,是则返回8,否则返回0. printf("%d\n",a); return 0; }
VC++6.0程序截图:
codeblocks程序截图:
TC编译器程序截图: