- 论坛徽章:
- 0
|
本帖最后由 supermegaboy 于 2011-03-23 20:47 编辑
switch (c = getch())
{
//here 能否在所有case之前定义int abc = 1, 或者进行 int abc = 90+ 30;等等 ...
keneth2078 发表于 2011-03-23 10:32 ![]()
允许在switch复合语句体内部(包括switch的条件表达式)进行对象定义,当然也包括case之前,但switch复合语句中的对象定义必须放在一个复合语句中,例如:- switch( i )
- {
- { int j = 0; }
- case ........
- case ........
- }
复制代码 原因是,由于该对象定义有可能被跳过,而使用一个未被定义的对象在C/C++看来是不合理的,将该对象定义放在复合语句中可以保证跳过后对象生存的合理性,虽然看起来越过该复合语句后对象仍然不能使用(被销毁),但所增加的这一点灵活性也是难能可贵的,比起禁止进行对象定义好得多。
在C++中,switch的条件表达式也可以进行对象定义,例如:- switch( int k = i >= 10 )
- {
- case .........
- case .........
- }
复制代码 |
|