c - 在 case 外部声明变量

标签 c switch-statement

我在 case 语句之外声明了一个变量。但如果我在一个案例中打印它的值,它会显示 0。有人能解释一下吗?

令人困惑的是为什么采用声明部分(int b,否则, undefined variable 的编译错误)以及为什么不初始化?

无法获得标记为重复的问题的答案,因此发布了这篇文章。

    main() 
    { 
        int a=1; 
        switch(a) 
        {    

            int b = 6;
            case 1: 
            {
            printf("b is %d\n",b); 
        }
            break; 
            default:printf("b is %d in default\n",a); 
            break; 
        } 
        return 0; 
    } 

最佳答案

变量 init 可以翻译为

int b;
b = 6;

该 case 的作用就像一个 goto,当遇到 switch 时会跳到那里。因此,您直接跳过 b = 6 行到 printf,这使得 b 的值未定义。

关于c - 在 case 外部声明变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17969671/

相关文章:

c - Windows cygwin 上的 C 中的 Gui

c - 浮点精度与实际分配的值不匹配?

Java 问题 : Is it possible to have a switch statement within another one?

c# - 进行切换以针对数组中的项目进行操作

c - 什么是输出? gcc输出是0。请解释一下?

c# - c# 8.0 switch 表达式中的多个案例

c - (size_t)-1 和 ~0 之间有什么区别?

c - Qsort 按字母顺序排列的字符串数组

C++ SDL2 程序在切换循环时崩溃

c - 是否有任何库来解析 C 中的 TCP/IP/UDP header