C 在大小写之外声明变量
我在case语句之外声明了一个变量。但如果我在一个案例中打印它的值,它会显示0。有人能解释一下吗 混淆的是为什么要使用声明部分(int b,否则,未定义变量的编译错误)和为什么不初始化? 我无法得到标有重复问题的答案,因此发表了这篇文章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
变量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;
}