我现在尝试半小时但没有成功......
它必须如此简单,但我无法弄清楚我做错了什么:isdigit()
没有评估true
。
#include <stdio.h>
#include <ctype.h>
main()
{
int a = 2;
if (isdigit(a))
{
printf("\ncorrect\n");
}
else
{
printf("\nnot correct\n");
}//end if
}// end main
我尝试了所有想到的事情
if (isdigit(a) == true)
if (isdigit(a) != false)
if (isdigit(a) != 0)
if (isdigit(a) == 1)
if (isdigit(2))
if (isdigit(2) == 2)
if (isdigit(2) == true)
没有成功...... 注意:它确实编译,我通过插入各种不同的打印语句来确保。
答案 0 :(得分:6)
您误解了isdigit
的使用情况。
int a = '2';
isdigit(a);
如果你传递一个数字,比如isdigit(2)
,那么2
作为当前语言环境中字符集中字符的代码(例如,ASCII代码2
是STX
,开头的文字,显然不是数字编号)。
答案 1 :(得分:2)
isdigit()
表示参数的值是否代表ASCII数字;也就是说,它在48到57之间。参见参考图表here。
因此isdigit(2)
正确返回0,因为整数值2不在范围内。
如果您将代码更改为isdigit('2')
,那么您将获得预期的结果,因为ASCII字符2
的值为50。
答案 2 :(得分:2)
将int a = 2;
更改为char a = '2';
或int a = '2';
请参阅here
答案 3 :(得分:1)
你有int
2.它不代表字符“2”
2因为字符只是“文本开头”字符(不是数字)
你需要
isdigit('2')
答案 4 :(得分:-3)
删除isdigit。 简单地写一下: -
if((a))
printf("correct");
else
printf("wrong");