#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();
}
Код не показывает ошибок, но каждый раз, когда я ввожу цифру, отображается «Не цифра».
int a;
std::cin >> a;
Этот код (или ваш несколько устаревший вариант) читает текст из консоли и преобразует этот текст в целочисленное значение. Так что если вы введете 0
в консоли значение a
будет 0
не '0'
, isdigit
сообщает, является ли значение символа, которое вы передаете ему, представляет собой цифру, и 0
нет, поэтому результат почти наверняка правильный. Если вместо этого вы читаете значение в переменную типа char
вы получите поведение, которое вы ожидаете.
char a;
std::cin >> a;
С помощью cin>>a
чтобы извлечь целое число, будет читать число (несколько цифр) из ввода и преобразовывать его в двоичное значение.
Например, если вы введете 10
значение a
будет 10. Если вы затем интерпретировать это значение, как если бы это был символ в isdigit(a)
, это будет пониматься как ascii / ansi / utf8, эквивалентный для 10, будучи '\n'
и это явно не цифра.
Чтобы получить ожидаемый результат, сделайте a
символ