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