switch case 中声明变量后执行的奇怪问题
执行以下的 C 语言程序:
#include <stdio.h>
int main(int argc, const char * argv[]) {
// insert code here...
int val = 0;
switch (val) {
int innerVal = 1;
case 0:
{
innerVal++;
printf("%d\n", innerVal);
}
case 2:
{
innerVal++;
printf("%d\n", innerVal);
}
default:
{
innerVal++;
printf("%d\n", innerVal);
}
}
return 0;
}
预想的输出结果是1,2,3,4
,但是结果却是1,2,3
,第一个printf
并没有执行,而且数字的增加总是慢了一个 case block,有对 switch case 中声明变量比较熟悉的朋友来看看是为什么吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
解释我写在注释里面了
我不知道为什么要这样写代码
为了学习?
因为这不是标准代码 让别人读起来很奇怪
1 - 声明innerVal不能声明在switch中得非case block内
2 - case 要写break;