gpt4 book ai didi

c++ - 问号运算符的多个语句

转载 作者:太空宇宙 更新时间:2023-11-04 16:18:59 27 4
gpt4 key购买 nike

我有两个变量

int a, b ;

ab 可以有 0-3 中的任何值,并且应该有一对基于 a 和 b 的值的每个条件的句子。

我使用了嵌套开关:

switch(a)
{
case go:
{
switch(b)
{
case go: {...}
...
case write: {...}
}
}
...
case 3:
{
...
}
}

我还有一个

enum

{
go = 0 ;
wait =1 ;
read = 2;
write =3 ;
}

我有一个非常大的嵌套开关来检查所有 4*4 =16 个条件

我想使用问号 来实现吗? : 运算符

有点像
(a=b==0) ?做一点事 ?做点什么。

但是我在每个条件下都有多个语句要做。

我如何使用它来做到这一点? : 三元运算符?

提前致谢

最佳答案

您可能想考虑将 4 x 4 开关 block 展平为一个 16 路开关:

#define SELECT(a, b) ((a) * 4 + (b))

int select = SELECT(a, b);

assert(a >= 0 && a < 4); // sanity checking - make sure a and b are valid
assert(b >= 0 && b < 4);

switch (select)
{
case SELECT(0, 0):
// ...
break;
case SELECT(0, 1):
// ...
break;
case SELECT(0, 2):
// ...
break;
case SELECT(0, 3):
// ...
break;
case SELECT(1, 0):
// ...
break;

// ...

case SELECT(3, 3):
// ...
break;
}

请注意,这在 C 和 C++ 中都可以正常工作。无论 abint 还是 enum ,它都有效(请注意,您可以使用实际的SELECT 宏中的枚举标签 - 您不需要使用文字常量)。

关于c++ - 问号运算符的多个语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19407527/

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