C++神奇错误之switch内定义变量

出现 [Error] jump to case label [-fpermissive] 的原因是因为 switch 结构内不能够定义变量。

比如:

case 1:
    scanf("%d %d",&x,&y);
    auto p=color[y].upper_bound(dfn[x]);
    if(p!=color[y].begin()&&low[bc[*prev(p)]]>=low[x])continue;
    while(p!=color[y].end()&&(*p)<=low[x]){
        upd(bc[*p],-1);
        p=color[y].erase(p);
    }
    color[y].insert(dfn[x]),upd(x,1);
    break;
case 2:
    scanf("%d",&x);
    printf("%d\n",(low[x]-dfn[x]+1)*A.ask(dfn[x])+B.ask(low[x])-B.ask(dfn[x])); 
    break;

然后你就可以愉快的报错了。

posted @ 2025-07-20 14:26  TH911  阅读(19)  评论(0)    收藏  举报