gpt4 book ai didi

c++ - #define C++ 关键字 'case' 在 switch case 语句中?

转载 作者:行者123 更新时间:2023-11-30 03:40:29 29 4
gpt4 key购买 nike

我正在准备编码竞赛,如果您的代码更短,您将获得加分。我想知道是否可以从 switch case 语句中“#define”“case”关键字,这样如果我必须在比赛中使用 switch case 语句,我就不必在 switch 中一次又一次地键入“case”关键字声明。

示例代码片段:

             switch(input_string[0])
{
case '+':p = (a + b);t;
case '-':p = (a - b);t;
case '*':p = (a * b);t;
case '/':p = (a / b);t;
case '%':p = (a % b);t;
case '^':p = pow(a,b);t;
}

a,b 和 p 是整数。当字符input_string[0]为'+'时,将a和b相加,并将和赋值给p。

重要提示:上面代码片段中的“t”是 break 语句。我用过'#define t break;'这样我就不必多次编写 break 关键字。我想知道是否可以对“case”关键字做同样的事情。

我能否将 case 定义为“#define c case”并在 switch case 语句中需要使用“case”的地方使用“c”,以便生成的代码片段如下所示:

        switch(e[i])
{
c '+':p = (a + b);t;
c '-':p = (a - b);t;
c '*':p = (a * b);t;
c '/':p = (a / b);t;
c '%':p = (a % b);t;
c '^':p = pow(a,b);t;
}

我尝试执行“#define c case”,但出现以下错误 - “错误:表达式前应包含 'case' 关键字”

最佳答案

我建议不要这样做。但是如果你这样做,请立即取消定义它,否则在任何看到c的地方,无论在什么上下文中,都会发生非常糟糕的事情

    #define c case
#define t break;
switch(e[i])
{
c '+':p = (a + b);t;
c '-':p = (a - b);t;
c '*':p = (a * b);t;
c '/':p = (a / b);t;
c '%':p = (a % b);t;
}
#undef c
#undef t

在这种情况下,处理器基本上是一个 token 替换工具,将在实际编译之前运行。


这比您的原始代码还要短:

#define c case
#define t break
switch(e[i]){c'+':p=(a+b);t;c'-':p=(a-b);t;c'*':p=(a*b);t;c'/':p=(a/b);t;c'%':p=(a % b);t;c'^':p=pow(a,b);}
#undef c
#undef t

如您所见,更短是一个非常糟糕的主意,除了在代码混淆挑战中

关于c++ - #define C++ 关键字 'case' 在 switch case 语句中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37968898/

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