【问题标题】:what if I use many 'if's and only one 'else' [closed]如果我使用许多“如果且只有一个”,该怎么办[关闭]
【发布时间】:2020-02-04 21:29:57
【问题描述】:

stackoverflow的朋友们,我大学一直在学习C语言。

在学习的过程中,我很好奇如果我使用多个if 结构而只使用一个else 结构会出现技术错误。

例如:

if (condition 1)

if (condition 2)

if (condition 3)

if (condition 4)

else

在上述情况下,我担心如果变量与第一个if结构的条件不匹配, 它会“直接”到 else,而不是第二个 if

我的担心是真的吗?还是永远不会发生?

提前谢谢你。

【问题讨论】:

  • 最里面的一个...
  • 始终使用花括号。如果缺少它们,请添加它们(并删除任何多余的分号)。然后应该清楚 else 属于哪里。
  • 您的示例不是有效的 C 代码。为了准确回答您的问题,您需要发布minimal reproducible example
  • 谢谢,我会从下一个问题中更多地关注最小可重现的例子。
  • 您为什么不编写代码并尝试一下?一旦你运行代码,你就会有一个很好的主意!

标签: c if-statement


【解决方案1】:

C11 Standard draft 6.8.4.1p3:

else 与在词汇上最近的 if 相关联,即 语法允许。

即在嵌套的if 结构中,它将对应于最里面的if(“if (condition 4)”)。

【讨论】:

  • 我没有考虑嵌套的 if。我应该在发布之前解释这种情况。谢谢你的回答!
  • 您在问题中的代码是嵌套的if。但如果不是,答案仍然有效。
【解决方案2】:

如果您想依次检查每个条件直到找到匹配项,请使用

if (condition 1) {

} else if (condition 2) {

} else if (condition 3) {

} else if (condition 4) {

} else {

}

这实际上与以下内容相同:

if (condition 1) {

} else {
    if (condition 2) {

    } else {
        if (condition 3) {

        } else {
            if (condition 4) {

            } else { 

            }
        }
    }
}

【讨论】:

    猜你喜欢
    • 2022-07-25
    • 1970-01-01
    • 2016-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-20
    • 1970-01-01
    相关资源
    最近更新 更多