gpt4 book ai didi

c++ - C++ 中的作用域 case 语句 : purpose of cross-scope case labels?

转载 作者:太空宇宙 更新时间:2023-11-04 14:58:07 24 4
gpt4 key购买 nike

我当前的代码中有一个错误,我已经为此苦苦思索了几天。我将在下面发布代码的摘要版本(不是我的实际代码,但它仍然可以编译)。

#include <iostream>

using namespace std;

int main()
{
int x = 7;

switch(x)
{
case 1:
{
case 2:
cout << "hi";
}
}
}

有时我喜欢为我的 switch case 引入更严格的范围,这样局部变量名称就不会干扰我之前使用的变量名称。显然,有一天我有一个电话要接听或其他事情,但没有按照我的意愿完成案例陈述,但后来确定我已经完成了。情况 2 实际上应该在嵌套开关中,而不是作为原始外部开关的一部分(对于那些想知道的人,我在我的代码中使用命名常量,而不仅仅是魔数(Magic Number))。在 g++ 上,在没有任何选项的情况下进行编译时,我没有收到警告或错误。

我的问题:为什么允许跨范围的 case 从 switch 跳转?它有什么作用?

最佳答案

Duff's Device 并不是已经建议的跨范围案例标签的“目的”,它仅仅是对它的一种利用。

事实可能是它没有有意设计的目的,而只是最简单的可行实现的产物。这种设计使得 switch-case 构造可以完全合理地执行操作,但也不会明确保护您免受不合理的影响。

关于c++ - C++ 中的作用域 case 语句 : purpose of cross-scope case labels?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4090549/

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