首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在switch语句中使用goto时出现" error : duplicate case value“错误

在switch语句中使用goto时出现" error : duplicate case value“错误
EN

Stack Overflow用户
提问于 2021-11-11 14:17:10
回答 1查看 55关注 0票数 0

我尝试使用goto语句在不同的switch-cases之间穿梭。我明白,使用goto并不可取,因为它会使程序难以理解,但我真的需要它。

以下是我的代码的示例版本:

代码语言:javascript
运行
复制
switch(something){
    case "c1":
        //some code
        break;
    case "c2":
       //some code
       break;
    case "c3":
        if(condition1)
            goto case "c1";
        if(condition2)
            goto case "c2";
    default:
        break;
}

现在,当我运行代码时,我得到了以下适用于goto case "c1"goto case "c2"的错误error: duplicate case value

我不知道为什么编译器会认为switch-case上的goto正在使用相同的条件在switch语句中重新定义另一个case,从而抛出重复的错误。感谢对此错误的任何帮助和原因。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-11 14:21:07

在任何情况下,switch语句都没有意义,因为您使用字符串文字作为case标签。

代码语言:javascript
运行
复制
switch(something){
    case "c1":
        //some code
        break;
    case "c2":
       //some code
       break;
    case "c3":
        if(condition1)
            goto case "c1";
        if(condition2)
            goto case "c2";
    default:
        break;
}

switch语句中的表达式转换为整型或枚举类型,而该类型不能隐式转换为指针或字符串文字。

也许您需要使用字符文字,例如

代码语言:javascript
运行
复制
case 'c1':

第二个问题是goto语句不能使用case标签。您只能在goto语句中使用以标识符表示的标签。goto语句的语法为

代码语言:javascript
运行
复制
goto identifier ;

因此,编译器认为goto语句中使用的case标签重新定义了已经引入的case标签。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69929810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档