switch结构的花括号

今天学C++PRIMER的时候去看第六章基本语言里的SWITCH,看到了“对于switch结构,只能在它的最后一个case标号或default标号后面定义变量”这句话,以前没学过,于是打开VS2008自己动手测试一下。我写了一段最简单的代码用来测试,如下:

#include <iostream>
using namespace std;
void main()
{
 char a;
 switch(a=cin.get())
 
  case 'a':
   {int num=2;
   cout<<"case a."<<num<<endl;
   break;}
  case 'b':
   cout<<"case b."<<endl;
   break;
  default:
   cout<<"case default"<<endl;
   break;
 
 
}
 

结果出现了莫名其妙的错误

1>g:/vc++ 工程/case内变量定义测试/case内变量定义测试/main.cpp(12) : error C2046: 非法的 case
1>g:/vc++ 工程/case内变量定义测试/case内变量定义测试/main.cpp(14) : error C2043: 非法 break
1>g:/vc++ 工程/case内变量定义测试/case内变量定义测试/main.cpp(15) : error C2047: 非法的 default
1>g:/vc++ 工程/case内变量定义测试/case内变量定义测试/main.cpp(17) : error C2043: 非法 break

想也想不通,改了半天也改不对,于是百度之,看了几个网页之后大概知道了,貌似是switch结构少了花括号,于是加上花括号:

#include <iostream>
using namespace std;
void main()
{
 char a;
 switch(a=cin.get())
 {
  case 'a':
   {int num=2;
   cout<<"case a."<<num<<endl;
   break;}
  case 'b':
   cout<<"case b."<<endl;
   break;
  default:
   cout<<"case default"<<endl;
   break;
 }
 
}
再编译就能通过了。

仔细想想,觉得switch结构后面的语句也相当于是一个块,是得有花括号包裹起来,只不过这个问题以前是照本宣科从来没注意过,自己做一下,就出问题了,再一次证明了实践是很好而且必要的学习方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值