我有两个变量
int a, b ;
a
并且b
可以有任何值从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) ? Do something ? Do something.
但是,在每种情况下我都需要执行多个语句。
我该如何使用呢?:三元运算符?
提前致谢
您可能需要考虑将4 x 4开关模块展平为单个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 ++中都可以正常工作。无论a
和b
是int
s还是enum
s ,它也都可以工作(请注意,您可以在SELECT宏中使用实际的枚举标签-无需使用文字常量)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句