问号运算符的多个语句
Multiple Statements for question mark operator
我有两个变量
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 宏中使用实际的枚举标签 - 您不需要使用文字常量)。
相关文章:
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- 三元运算符在返回语句中给出意外的结果
- C++使用逗号运算符的多个控制语句
- 当返回语句时,逗号运算符、大括号初始化列表和 std::unique_ptr 组合在一起
- 是否可以在C++中使用三元运算符在 if 语句中选择比较运算符?
- 在同一语句中重载运算符+多次
- 复制构造函数和复制赋值运算符是否应具有相同的语句?
- c++ 如何计算赋值运算符(if 语句)
- 为什么使用 and 运算符比较 if 语句中的 2 个对象会抛出错误,而使用 2 if 语句则不会
- 在返回语句中嵌套条件运算符
- 为什么 if 语句对于运算符重载函数计算 false
- 使用 if (? 运算符) 语句传递带有指针的数组
- 如何在COUT语句中使用移动运算符
- 在 c++ 中,如何修改运算符以便在同一语句中连续调用它两次
- 我们可以在if语句中使用三元运算符
- 如何修复"运算符不匹配=="比较if语句中的字符串时
- 如何像if语句一样使用三元运算符
- 关于手术室 ( || )运算符和返回语句
- 赋值运算符和条件语句
- 返回语句中的C++11显式转换运算符/构造函数