#include<iostream.h>
#include<conio.h>
#include<ctype.h>
void main()
{
clrscr();
int a;
cout<<"Enter a digit";
cin>>a;
if(isdigit(a))
{
cout<<"You have entered a digit";
}
else
{
cout<<"Not a digit";
}
getch();
}
代码显示没有错误,但每次输入数字时都显示&#34;不是数字&#34;。
答案 0 :(得分:2)
int a;
std::cin >> a;
此代码(或您稍微过时的变体)从控制台读取文本并将该文本转换为整数值。因此,如果您在控制台中输入0
,a
的值将为0
,而不是'0'
。 isdigit
告诉您传递给它的字符值是否代表数字,0
不代表数字,因此结果几乎肯定是正确的。如果您将值读入char
类型的变量,您将获得您期望的行为。
char a;
std::cin >> a;
答案 1 :(得分:2)
使用cin>>a
提取整数,将从输入中读取一个数字(几位数)并将其转换为二进制值。
例如,如果您输入10
,则a
的值将为10.如果您将此值解释为isdigit(a)
中的字符,则将其理解为ascii / ansi / utf8相当于10,为'\n'
,这显然不是数字。
要获得您期望的结果,请将a
设为char。