case下inta=3;//不行,报错他非要:inta;a=3;这样写才行这是为什么?有病?...
case下
int a = 3;//不行,报错
他非要:
int a;
a= 3;
这样写才行 这是为什么?有病?
C\C++中,switch case下,变量为何不能初始化赋值?
答案:3 悬赏:60 手机版
解决时间 2021-03-19 17:01
- 提问者网友:做自己de王妃
- 2021-03-19 05:32
最佳答案
- 五星知识达人网友:白昼之月
- 2021-03-19 06:56
你的问题是不是说
int b
switch ( expression ) {
case 1 : int a = 3; break;
case 2 : b = 3; break; //这样可以,没有定义变量,即使被跳过也没关系
case 3 : { int c = 3; } break; //定义的c作用域为case 3所在的那个块所以说呢,C++规定不能跳过变量初始化语句直接跳到变量的作用域内
int b
switch ( expression ) {
case 1 : int a = 3; break;
case 2 : b = 3; break; //这样可以,没有定义变量,即使被跳过也没关系
case 3 : { int c = 3; } break; //定义的c作用域为case 3所在的那个块所以说呢,C++规定不能跳过变量初始化语句直接跳到变量的作用域内
全部回答
- 1楼网友:轻雾山林
- 2021-03-19 09:32
这个嘛,就是语法,没办法,我也曾经碰到过,你记住这个语法就可以了
- 2楼网友:人類模型
- 2021-03-19 08:32
你的第二种情况,应该是这样的吧:
int main()
{
int a ; //这个定义在switch外边
int b;
scanf("%d" , b );
switch(b)
{
case 0:
a=3 ;
printf("a=%d\n", a );
default:
break ;
}
return 0;
}
而第一种情况,可以这样
int main()
{
int b;
scanf("%d" , b );
switch(b)
{
case 0:
{ //加上{}就可以了
int a=3 ;
printf("a=%d\n", a );
}
default:
break ;
}
return 0;
}
如果是这样,只是编译器的问题支持c99的才可以在第二种情况下不加{}的
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯