gpt4 book ai didi

c - 如果没有 default case,switch 会做什么?

转载 作者:太空狗 更新时间:2023-10-29 15:58:49 25 4
gpt4 key购买 nike

我找到了如下一段代码:

switch(val){
case 0:
// some actions
break;
case 1:
// some actions
break;
case 2:
// some actions
break;
}

但是还不清楚在例如 val = 10 的情况下会发生什么?

我尝试在一个带有错误值的短程序中测试此代码,但没有任何反应 - 程序正常退出。

这段代码会导致任何潜在的错误吗?能保证什么都不会发生吗?

最佳答案

它什么都不做,在任何情况下都不会进入。

建议将 default 子句作为 switch 语句中的最后一个子句。如果您忘记了 default 子句,Lint 等程序将发出警告。请注意,default 子句在 MISRA-C 中是必需的。

编辑:

我个人更喜欢它作为最后一个子句,但我认为最重要的是要有最后一个子句。为什么我更喜欢它作为最后一个子句是因为最小惊讶原则:人们习惯于将它视为最后一个子句,所以我认为它简化了程序阅读。

正如我在回答中提到的 LintMISRA-C 仅供引用:如果 PC-Lint/flexelint 不会发出警告 default 存在但不是最后一个子句,MISRA-C 明确要求 default 作为最后一个子句出现。

关于c - 如果没有 default case,switch 会做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15462519/

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