C 当我用函数isdigit()检查两个整数时,第一个=1,第二个=2,结果是错误的
为什么在我的代码中,isdigit函数不起作用,当我打印和时它是0? p、 包括lib isdigit用于检查字符是否为十进制数字-我不清楚使用了什么字符库,但我不知道有任何字符库中1和2是字符。例如,请尝试48和49,它们是“0”和“1”的ASCII值。这两者都应该使isdigit返回非零结果,至少如果它使用ASCIIC 当我用函数isdigit()检查两个整数时,第一个=1,第二个=2,结果是错误的,c,C,为什么在我的代码中,isdigit函数不起作用,当我打印和时它是0? p、 包括lib isdigit用于检查字符是否为十进制数字-我不清楚使用了什么字符库,但我不知道有任何字符库中1和2是字符。例如,请尝试48和49,它们是“0”和“1”的ASCII值。这两者都应该使isdigit返回非零结果,至少如果它使用ASCII 如果没有文本数据,则不需要调用isdigit。现在还不清楚您真正想要实现的是什么,但我怀疑isdigit是一种误导…原因是它根据Ascii将这些int转换为char,并将它们视
如果没有文本数据,则不需要调用isdigit。现在还不清楚您真正想要实现的是什么,但我怀疑isdigit是一种误导…原因是它根据Ascii将这些int转换为char,并将它们视为非数字。isdigitx在x介于48和59之间(含48和59)时为您提供true 在Ascci值中 48=0 49=1 57=9isdigit函数检查给定的参数是否表示数字,而不是参数类型是否为数字毕竟,参数始终是整数
例如,“a”的ASCII表示为97,因此isdigit97将返回零。但是,“1”是49,因此isdigit49将返回非零,即true。因为它们都不是平台字符表示中的数字。请参阅此参考资料。isdigit不适用于整数。显然,int变量包含数字。isdigit用于检查字符是否包含数字。当prvi和drugi介于48和57之间时,它会起作用,因为ASCII表中的48和57以及“0”和“9”分别将签名显示为接受int参数。。。错了吗?没有讽刺-我真的不知道什么才算是C标准库的一个好的web参考。ISDIGH采用int。jon ScSwitt,引用不被C++社区高度重视,但它是正确的。在*nix系统上,man isdigit也很有用。确实是int,但它在内部将int视为int的Ascii值。我也不认为它被限制为Ascii。我不认为它被限制为Ascii。@juanchopanza你说得很对,-我说Ascii只是为了让事情简单。如果您想澄清这一点,请随意编辑答案。谢谢,我没有读到关于此函数的参数类型要求。
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);
}