isdigit () не работает в простой программе?

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

Код не показывает ошибок, но каждый раз, когда я ввожу цифру, отображается «Не цифра».

0

Решение

int a;
std::cin >> a;

Этот код (или ваш несколько устаревший вариант) читает текст из консоли и преобразует этот текст в целочисленное значение. Так что если вы введете 0 в консоли значение a будет 0не '0', isdigit сообщает, является ли значение символа, которое вы передаете ему, представляет собой цифру, и 0 нет, поэтому результат почти наверняка правильный. Если вместо этого вы читаете значение в переменную типа char вы получите поведение, которое вы ожидаете.

char a;
std::cin >> a;
2

Другие решения

С помощью cin>>a чтобы извлечь целое число, будет читать число (несколько цифр) из ввода и преобразовывать его в двоичное значение.

Например, если вы введете 10 значение a будет 10. Если вы затем интерпретировать это значение, как если бы это был символ в isdigit(a), это будет пониматься как ascii / ansi / utf8, эквивалентный для 10, будучи '\n' и это явно не цифра.

Чтобы получить ожидаемый результат, сделайте a символ

2

По вопросам рекламы [email protected]