C 在大小写之外声明变量

C 在大小写之外声明变量,c,switch-statement,C,Switch Statement,我在case语句之外声明了一个变量。但如果我在一个案例中打印它的值,它会显示0。有人能解释一下吗 混淆的是为什么要使用声明部分(int b,否则,未定义变量的编译错误)和为什么不初始化? 我无法得到标有重复问题的答案,因此发表了这篇文章 变量init可以转换为 int b; b = 6; 该案例的行为类似于一个goto,当遇到开关时会跳过它。因此,您可以跳过b=6行,直接跳到printf,这使得b的值未定义。将case语句视为一个goto语句 switch(test){ printf("T

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

混淆的是为什么要使用声明部分(int b,否则,未定义变量的编译错误)和为什么不初始化?

无法得到标有重复问题的答案,因此发表了这篇文章


变量init可以转换为

int b;
b = 6;

该案例的行为类似于一个goto,当遇到开关时会跳过它。因此,您可以跳过
b=6
行,直接跳到
printf
,这使得
b
的值未定义。

case
语句视为一个goto语句

switch(test){
  printf("This code is skipped!\n");

  case 1:
    break;

  default:
    break;
}
测试变量时,跳转到匹配的案例,忽略
开关
案例
之间的任何内容。在您的示例中,完全跳过了变量定义


您正在打印未初始化变量的值。

这是未定义的行为。您到底为什么要这样做?为什么是int b;在那种情况下没有跳过?
switch(test){
  printf("This code is skipped!\n");

  case 1:
    break;

  default:
    break;
}