isdigit()在C中没有评估为true

时间:2013-08-01 01:43:07

标签: c

我现在尝试半小时但没有成功...... 它必须如此简单,但我无法弄清楚我做错了什么: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)  

没有成功...... 注意:它确实编译,我通过插入各种不同的打印语句来确保。

5 个答案:

答案 0 :(得分:6)

您误解了isdigit的使用情况。

int a = '2';
isdigit(a);

如果你传递一个数字,比如isdigit(2),那么2作为当前语言环境中字符集中字符的代码(例如,ASCII代码2STX,开头的文字,显然不是数字编号)。

答案 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");