2

私は成功せずに今30分試みています...それはとても単純でなければなりませんが、私が間違っていることを理解できませisdigit()true.

#include <stdio.h>
#include <ctype.h>

main()
{

int a = 2;

if  (isdigit(a)) 
{   
   printf("\ncorrect\n");
}
else
{
    printf("\nnot correct\n");
}//end if


}// end main

思いつくことは全部やってみた

if  (isdigit(a) == true) 
if  (isdigit(a) != false) 
if  (isdigit(a) != 0) 
if  (isdigit(a) == 1)
if  (isdigit(2)) 
if  (isdigit(2) == 2)
if  (isdigit(2) == true)  

成功せずに... 注:確かにコンパイルされます。さまざまな異なるprintステートメントを挿入して確認しました。

4

5 に答える 5

7

の使い方を誤解していますisdigit

int a = '2';
isdigit(a);

数値を渡すと、たとえばisdigit(2)2現在のロケールの文字セットの文字のコードとして使用されます (たとえば、ASCII コード2STX, START OF THE TEXT であり、明らかに数字ではありません)。

于 2013-08-01T01:46:09.110 に答える
3

isdigit()引数の値が ASCII 数字を表すかどうかを示します。つまり、48 から 57 の範囲にあります。こちらの参照表を参照してください。

整数isdigit(2)値 2 は範囲外であるため、正しく 0 を返します。

コードを変更すると、ASCII 文字の値が 50isdigit('2')であるため、期待どおりの結果が得られます。2

于 2013-08-01T01:45:16.793 に答える
2

に変更またはこちらをint a = 2;ご覧くださいchar a = '2';int a = '2';

于 2013-08-01T01:46:21.190 に答える
1

あなたは2を持っていますint.文字「2」を表していません.2
文字は単なる「テキストの開始」文字です(数字ではありません)

あなたが必要

isdigit('2')
于 2013-08-01T01:45:01.170 に答える
-3

isdigit を削除します。簡単に書く:-

if((a))
printf("correct");

else
printf("wrong");
于 2013-08-01T01:56:14.300 に答える