c - 没有中断的开关盒是一种不好的做法吗?

标签 c switch-statement

我有一个开关,我在其中检查某种属性,如果检查产生特定值,我想检查另一个值,所以我做了这样的事情:

switch(property_A)
{
case NA:
    if(value_0 == property_B)
        property_A = value_a;
    else if(value_1 == property_B)
        property_A = value_b;
case value_0:
...
break;
case value_1:
...
break;
}

所以,我知道这解决了我的问题,但我不知道这是个好主意还是我应该换一种方式

# NA 案例有点像默认案例,但不完全是,因为它确实告诉了我一些事情,但还不够

最佳答案

这取决于你想做什么。如果你到达 case NA,没有 break 关键字,value_0 case 将在两个 if< 之一之后执行 分支完成。因此,如果那是您想要的行为,不使用 break 也没关系,但我认为这不是您想要的。

我建议您只需将 if - else 语句移动到 switch 上方并删除 NA 大小写。这样,您将首先将正确的数据分配给 property_A,然后您可以在 switch 中使用它做任何您想做的事情。

编辑:作为Jack Deeth points out ,如果您故意省略了 break 语句,最好添加您这样做的注释。

关于c - 没有中断的开关盒是一种不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40912857/

相关文章:

在运行时在 c 中创建某个结构

c# - C# 和 C 中的文件未找到异常

c - 从 xmlNode 获取源文件名?

php变量改变结果

c++ - 具有大量案例的 Switch 语句

java - 反编译后$SwitchMap$错误

c - 如何使用 C 在 Windows 中执行批处理 (.bat) 文件

java - 如何在 switch case 中使用枚举类

php - 在 switch 中继续 case

c - 使用 Arduino 通过 XBee 发送 (X,Y) 坐标