2

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

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

4

5 回答 5

7

您误解了isdigit.

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

如果您向它传递一个数字,例如isdigit(2),它将2作为当前语言环境的字符集中的字符的代码(例如,ASCII 代码2STX,文本的开头,这显然不是数字)。

于 2013-08-01T01:46:09.110 回答
3

isdigit()指示参数的值是否表示 ASCII 数字;也就是说,它在 48 到 57 的范围内。请参阅此处的参考图表。

所以isdigit(2)正确返回 0,因为整数值 2 不在范围内。

如果您将代码更改为isdigit('2')then 您将得到您期望的结果,因为 ASCII 字符的值2是 50。

于 2013-08-01T01:45:16.793 回答
2

更改int a = 2;char a = '2';int a = '2';查看此处

于 2013-08-01T01:46:21.190 回答
1

你有int2。它不代表字符“2”
2,因为字符只是“文本开头”字符(不是数字)

你需要

isdigit('2')
于 2013-08-01T01:45:01.170 回答
-3

删除 isdigit。只需写:-

if((a))
printf("correct");

else
printf("wrong");
于 2013-08-01T01:56:14.300 回答