gpt4 book ai didi

c - 在宏中使用三元运算符

转载 作者:行者123 更新时间:2023-12-02 08:23:01 25 4
gpt4 key购买 nike

我正在尝试将 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));

最佳答案

这里有几个错误。

  • 您不能使用#if,因为预处理器不知道您将输入的字符。
  • 在宏 TEST 中使用 || 而不是 &&
  • SMALLCASEUPPERCASE 宏中的括号错误(只有一个 ( 但两个 ))
  • 删除 SMALLCASEUPPERCASE 宏中的分号
  • 更喜欢使用字符值(如 '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");
}

关于c - 在宏中使用三元运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34973671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com