免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3283 | 回复: 3
打印 上一主题 下一主题

[函数] 讨论.isdigit()函数怎么和书上说的出入这么大.是书上写错了吗? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-02-12 18:52 |只看该作者 |倒序浏览
函数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可以是一个指针,或者函数吗?

论坛徽章:
0
2 [报告]
发表于 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却能正常显示...

论坛徽章:
0
3 [报告]
发表于 2005-02-12 23:12 |只看该作者

讨论.isdigit()函数怎么和书上说的出入这么大.是书上写错了吗?

isdigit(int c)中的参数c应该是输入字符的ascii码,而不是直接的数字。

论坛徽章:
0
4 [报告]
发表于 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'不一样, 你就会明白为什么出现你这个问题了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP