确定下面宏定义中的问题

jokerman 2001-02-05 11:55:00
在C语言中,下面的宏定义存在什么问题,请告知,谢谢:
#define ISDIGIT(C) ((c>='0')&&(c<='9'))?1:0
...全文
78 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
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可以省略,就算不省略,也应该加个括号

33,007

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧