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

を使用cin>>aして整数を抽出すると、入力から数値 (数桁) が読み取られ、バイナリ値に変換されます。

たとえば、10の値を入力aすると 10 になります。この値を の文字であるかのように解釈するisdigit(a)と、10 と同等の ascii/ansi/utf8 として理解されます'\n'。桁。

期待どおりの結果を得るにはa、char を作成します。

于 2016-11-17T23:17:15.613 に答える
2
int a;
std::cin >> a;

このコード (またはやや時代遅れのバリアント) は、コンソールからテキストを読み取り、そのテキストを整数値に変換します。したがって0、コンソールで入力すると、 の値はではなくaになります。渡された文字値が数字を表しているかどうかを示しますが、そうではないため、結果はほぼ確実に正しいです。代わりに値を型の変数に読み込むと、期待どおりの動作が得られます。0'0'isdigit0char

char a;
std::cin >> a;
于 2016-11-17T23:14:19.413 に答える