永发信息网

C\C++中,switch case下,变量为何不能初始化赋值?

答案:3  悬赏:60  手机版
解决时间 2021-03-19 17:01
case下inta=3;//不行,报错他非要:inta;a=3;这样写才行这是为什么?有病?...

case下

int a = 3;//不行,报错

他非要:

int a;

a= 3;

这样写才行 这是为什么?有病?

最佳答案
你的问题是不是说

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 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的才可以在第二种情况下不加{}的
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
四季沐歌太阳能太阳能热水器那个型号好
怡美婚庆地址在什么地方,想过去办事
软禁触犯了第几条法律
给你一个对公活期存款账户明细表怎么样做会计
跪求!《三国演义》自己印象深刻的5个场面并
徐州哪一家婚纱摄影最好?
脂肪粒没完全挤出来还会再成熟吗 5分
钢管按其是否镀锌分为哪两类
深岙里地址在哪,我要去那里办事
Windows Server 2008 标准版、数据中心版和企
美国大行Dahon UP510 16寸折叠自行车怎么样
如何检查眼睛是否有异物
我读书读到初二没有读了,打了两年工现在想回
宏力美味鲜地址在什么地方,想过去办事
在手机怎么复制淘宝上的网址发给别人。?
推荐资讯
蜷居的意思是什么
浦发银行信用卡办理时银行会打直属亲戚的电话
哪里有专业的汽车广告设计,我想给车贴车身广
保定市清苑县二胎准生证怎么办理?
眼睛不近视怎么买眼镜?想买副防辐射眼镜 折
是不适合沙宣头【图】
一年级看图写话《骄傲的小黄莺》
有谁能告诉我这是什么歌曲?一首很好听的曲子
塘仁这个地址在什么地方,我要处理点事
700W的220伏发热管电流是多少
佛山哪个区离深圳最近
蜗牛能吃鸡蛋皮子吗
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?