我可以使用#define在C中创建一个组或类似的东西吗?

时间:2016-09-04 18:14:39

标签: c if-statement

我想在C中创建排名检查功能。如果输入的字符是字母排名则增加。如果是算术运算符则降低秩。我可以使用IF - ELSE语句来创建它,但为了比较,我必须使用||(或)来编写每个字母。我试图找到一种捷径。 我正在寻找这样的事情:

#define alphabets 'A'||'B'||'C'||'D' and so on

#define digits '1'||'2'|| and so on

因此,当我使用IF-ELSE时,它应该像

if(char[i]==alphabets)
      rank--;
if(char[i]==digits)
      rank++;

2 个答案:

答案 0 :(得分:3)

标准库中有一些功能可用于您正在尝试执行的操作:

#define alpha(c) ((((c) >= 'a') && ((c) <= 'z')) || (((c) >= 'A') && ((c) <= 'Z')))
#define digit(c) (((c) >= '0') && ((c) <= '9'))

if(alpha(char[i]))
  rank--;
if(digit(char[i]))
  rank++;

或者,如果这是一个练习,您可以定义function-like macro来执行此操作:

npm shrinkwrap

答案 1 :(得分:2)

没有。你所拥有的ctype.h并不像那样。但是您可以使用isalpha()中的函数:isdigit()if( isalpha((unsigned char)(char[i])) ) rank--; if( isdigit((unsigned char)(char[i])) ) rank++; 是您正在寻找的函数。

z = 1