Gin*_*hta 2 c macros ternary-operator
我正在尝试将2个宏模板组合成第三个模板,以基本检查输入的字符是否为字母.我正在尝试将三元运算符用于前两个宏,然后使用#if指令得出结论,但一些语法错误不断出现.也许有人可以帮帮我吗?
#define SMALLCASE(X) (X>96&&X<123)?1:2);
#define UPPERCASE(X) (X>64&&X<91)?1:2);
#define TEST(X) (SMALLCASE(X))&&(UPPERCASE(X))
/*in main() after reading character*/
#if TEST(ch)
printf("Entered character is an alphabet");
#else
printf("Entered character isn't an alphabet");
#endif
printf("%d",SMALLCASE(ch));
Run Code Online (Sandbox Code Playgroud)
你这里有几个错误.
#if因为预处理器不知道您将输入的字符.||在宏中使用TEST而不是&&SMALLCASE和UPPERCASE宏(仅一个(而是两个))SMALLCASE和UPPERCASE宏中的分号'a')代替其ASCII值(例如97)你能做什么呢:
#define SMALLCASE(X) (((X)>='a') && ((X)<='z'))
#define UPPERCASE(X) (((X)>='A') && ((X)<='Z'))
#define TEST(X) ((SMALLCASE(X)) || (UPPERCASE(X)))
/*in main() after reading character*/
if (TEST(ch)) {
printf("Entered character is an alphabet\n");
} else {
printf("Entered character isn't an alphabet\n");
}
Run Code Online (Sandbox Code Playgroud)