0
#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();
}

该代码没有显示错误,但每次我输入一个数字时,它都会显示“不是数字”。

4

2 回答 2

2
int a;
std::cin >> a;

此代码(或您有些过时的变体)从控制台读取文本并将该文本转换为整数值。因此,如果您0在控制台键入,则 的值a将是0,而不是'0'isdigit告诉你传递给它的字符值是否代表一个数字,而0不是,所以结果几乎肯定是正确的。如果您改为将值读入类型变量,char您将获得您期望的行为。

char a;
std::cin >> a;
于 2016-11-17T23:14:19.413 回答
2

用于cin>>a提取整数,将从输入中读取一个数字(几位)并将其转换为二进制值。

例如,如果您键入10的值a将是 10。如果您将这个值解释为好像它是 中的一个字符isdigit(a),它将被理解为 10 的 ascii/ansi/utf8 等价物,'\n'而这显然不是数字。

要获得您期望的结果,请创建a一个字符。

于 2016-11-17T23:17:15.613 回答