zoukankan      html  css  js  c++  java
  • C语言 关于使用switch的注意事项

    switch case语句中,是不能直接在某一个case语句中直接定义一个变量

    例如:

        switch (a) {
            case 'a':
                int a=10;
                Node *node=(Node *)malloc(sizeof(Node));
                break;
            default:
                break;
        }

    这个地方定义一个变量或者是一个结构体变量都是不被允许的

    这里举一个很明显的例子:

        switch (a) {
            case 1:
                int num=2;
                break;
            case 2:
                printf("%d	",num);
                break;
            default:
                break;
        }

    当a的值取为2的时候,case1中的num是对case2可见的,类似于java中的public,但是你在使用case2的情况的时候,编译器会检测到由于没有执行case1导致的num未经过初始化而在case2中打印而报错,故编译器会在编译阶段就禁止这种在case里面定义新函数的行为

    解决这个的办法针对不同的编译器的通用解决办法就是在switch之外定义一个num变量。

    或者加上一个大括号:

        switch (a)
        {
            case 1:
            {
                int num=2;
                break;
            }
            default:
                break;
        }

    将变量的生命周期限制在一定的范围里面就可以解决这个问题。

  • 相关阅读:
    Java面向对象设计——购物车·
    查找

    栈和队列
    指针
    数组
    第四次博客——函数
    第三次博客作业
    第二次博客作业
    Java购物车大作业01
  • 原文地址:https://www.cnblogs.com/oldfish123/p/13836798.html
Copyright © 2011-2022 走看看