为什么在我的代码中,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);
}
答案 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)
isdigit(x)会为您提供 true
在Ascci值
48 = 0
49 = 1
57 = 9