gpt4 book ai didi

c - 如何将开关箱内的箱子软分隔

转载 作者:行者123 更新时间:2023-12-04 12:33:36 25 4
gpt4 key购买 nike

我有一个开关柜,其中有4个柜子具有相同的通用代码,但是我需要为它们分别初始化变量:

 int a,b,c;
switch(type)
{
case A:
case B:
case C:
case D:
foo(a,b,c);
}


我目前所拥有的类似于 a = type == A ? 1 : 2;,并且有点复杂的变量:

if(type == A)
b = 1;
else if(type == B)
b = 5;
else
b = 2;


这可行,但是在我看来看起来很难看,而且不太流畅。我可以完全区分大小写,但是我想避免在代码中复制粘贴。

我希望做的是:

 int a,b,c;
switch(type)
{
case A:
a = 1;
b = 1;
case B:
a = 2;
b = 5;
case C:
case D:
a = 1;
b = 2;
foo(a,b,c);
}


但这显然不起作用,因为即使是A或B情况,也会发生 case D变量赋值。有没有办法以一种简洁的方式来实现此目的?

编辑: switch实际上是过滤其他情况,所以我确实希望在这4种情况下使用 foo()

最佳答案

根据您的代码,您可以执行以下操作:

int a,b,c;
switch(type)
{
case A:
a = 1;
b = 1;
goto call_foo;
case B:
a = 2;
b = 5;
goto call_foo;
case C:
case D:
a = 1;
b = 2;
call_foo:
foo(a,b,c);
break;

// [...] more cases
}


为了证明使用IMCC goto的合理性,此构造中的逻辑需要稍微复杂一些。

关于c - 如何将开关箱内的箱子软分隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46959720/

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