当我用函数isdigit()检查两个整数,第一个= 1,第二个= 2时,它给我错误的结果

时间:2014-11-01 14:30:52

标签: c

为什么在我的代码中,isdigit()函数不起作用,当我打印sum时它是0? p.s包括<ctype> lib

int main(void)
{
  int sum = 0;
  int prvi = 0;
  int drugi = 0;

   prvi = 1;
   drugi = 2;

            if ( isdigit(prvi) && isdigit(drugi) )
                sum = prvi + drugi;

    printf("sum: %d \n",sum);
}

4 个答案:

答案 0 :(得分:5)

isdigit用于检查字符是否为十进制数字 - 我不清楚使用了哪个字符集,但我不知道其中的任何字符库和2是字符。例如,尝试48和49,它们是'0'和'1'的ASCII值。 那些应该使isdigit返回非零结果,至少如果它使用ASCII。

如果您没有文字数据,则无需致电isdigit。目前尚不清楚你真正想要实现的目标,但我怀疑isdigit是一个红鲱鱼......

答案 1 :(得分:2)

原因是它根据Ascii将这些int转换为char,并将它们视为非数字。

答案 2 :(得分:2)

isdigit()函数检查给定的ASCII character是否代表数字,而不是参数的类型是否为数字(毕竟,参数将始终为整数)。

例如,&#39; a&#39;的ASCII表示是97,所以isdigit(97)将返回零。但是,&#39; 1&#39;是49,所以isdigit(49)将返回非零,即&#34; true&#34;。

答案 3 :(得分:1)

当x介于48和59之间时,

isdigit(x)会为您提供 true

在Ascci值

48 = 0

49 = 1

57 = 9