确定下面宏定义中的问题

jokerman 2001-02-05 11:55:00
在C语言中,下面的宏定义存在什么问题,请告知,谢谢:
#define ISDIGIT(C) ((c>='0')&&(c<='9'))?1:0
...全文
56 2 打赏 收藏 举报
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wing_pn 2001-02-06
没什么大问题,tc 下
#define ISDIGIT(c) ((c>'0')&&(c<'9'))?1:0 /* 注意c字符的大小写*/
*/#include "stdio.h"
main()
{char a='3',b='a';
int q,w;
q=ISDIGIT(a);w=ISDIGIT(b);
printf("\n %d ,%d",q,w);
}
!!!假如有问题:
1.#define ISDIGIT(C) ((c>='0')&&(c<='9'))?1:0
你ISDIGIT(C)的'C'是大写,但实现是小写,c分大小写的,看我的程序
2.假如你是判断是否数字的话, <, > 应为<=, >=
3.假如用q=ISDIGIT(++a)之类的话,将会有不想出现的结果,最好用C++的inline函数
  • 打赏
  • 举报
回复
ed9er 2001-02-06
#define ISDIGIT(c) ( (c)>='0' && (c)<='9' )

?1:0可以省略,就算不省略,也应该加个括号

  • 打赏
  • 举报
回复
发帖
数据结构与算法
加入

3.2w+

社区成员

数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
申请成为版主
帖子事件
创建了帖子
2001-02-05 11:55
社区公告
暂无公告