Chinaunix

标题: 讨论.isdigit()函数怎么和书上说的出入这么大.是书上写错了吗? [打印本页]

作者: akaaron    时间: 2005-02-12 18:52
标题: 讨论.isdigit()函数怎么和书上说的出入这么大.是书上写错了吗?
函数isdigit()
根据书上所说.isdigit(int c).如果c为0-9的整数则返回非零值....否则返回零....
可是我用小代码来测试怎么和书上说的刚好相反呀...
********************************************************
#include<iostream>;
#include<ctype.h>;
using namespace std;
int main()
{
    int a,i;
    cout<<"plaese input nomber:";
    cin>;>;a;
    i=(isdigit(a));
    if (isdigit(a))
        cout<<"yes"<<endl;
    else
        cout<<"no"<<endl;
    cout<<i<<endl;
    return 0;
}
******************************************************
这里如果a为整数,isdigit(a)返回0,如果是字母或者其他,则返回4,就是非零值.怎么回事呀....isdigit(a)中的a可以是一个指针,或者函数吗?
作者: akaaron    时间: 2005-02-12 19:26
标题: 讨论.isdigit()函数怎么和书上说的出入这么大.是书上写错了吗?
#include<iostream>;
#include<ctype.h>;
using namespace std;
int main()
{
    int i;
    char a;
    cout<<"plaese input nomber:";
    cin>;>;a;
    i=(isdigit(a));
    if (isdigit(a))
        cout<<"yes"<<endl;
    else
        cout<<"no"<<endl;
    cout<<i<<endl;
    return 0;
}
***********************************
而把a的类型转为char却能正常显示...
作者: kj501    时间: 2005-02-12 23:12
标题: 讨论.isdigit()函数怎么和书上说的出入这么大.是书上写错了吗?
isdigit(int c)中的参数c应该是输入字符的ascii码,而不是直接的数字。
作者: HeavenTear    时间: 2005-02-13 15:14
标题: 讨论.isdigit()函数怎么和书上说的出入这么大.是书上写错了吗?
这其实是cout的原因。
count 实现了printf的format。而因为数据类型char >; int.
你如果看过vc的关于isdigit的实现,你就会明白了。
大概是这样的,我不太记得了:)
#define isdigit( x )  x>;='0'&&x<='9' ? x :: 0

你如果明白 0 和 '0'不一样, 你就会明白为什么出现你这个问题了




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2