回答:原因很简单,因为char底层也是数字,在0-127范围内,所有你实际上是在和 1,2,3...,即ASCII编码为39,40,41的进行比较,改写一下代码就知道了,判断是数字的话,要正确的比较哦
#include <stdio.h>
int myIsDigit(char c)
{
if(c == 1 || c == 2 || c == 3 || c == 4 || c == 5 || c == 6 || c == 7 || c == 8 || c == 9)
{
return 0;
}
else
{
return -1;
}
}
int myIsCharDigit(char c)
{
if(c == '1' || c == '2' || c == '3' || c == '4' || c == '5' || c == '6' || c == '7' || c == '8' || c == '9')
{
return 0;
}
else
{
return -1;
}
}
int main()
{
char c[1] = {'3'};
char m, s;
printf("%c\n", c[0]);
printf("%d\n", myIsDigit(3));
printf("%d\n", myIsDigit(c[0]));
m = c[0];
printf("%d\n", myIsDigit(m));
s = '3';
printf("%d\n", myIsDigit(s));
printf("%c\n", c[0]);
printf("%d\n", myIsCharDigit(3));
printf("%d\n", myIsCharDigit(c[0]));
m = c[0];
printf("%d\n", myIsCharDigit(m));
s = '3';
printf("%d\n", myIsCharDigit(s));
return 0;
}