相关疑难解决方法(0)

为什么不能在switch语句中声明变量?

我一直想知道这一点 - 为什么你不能在switch语句中的case标签之后声明变量?在C++中,您可以在任何地方声明变量(并且声明它们接近第一次使用显然是一件好事)但是以下仍然不起作用:

switch (val)  
{  
case VAL:  
  // This won't work
  int newVal = 42;  
  break;
case ANOTHER_VAL:  
  ...
  break;
}  
Run Code Online (Sandbox Code Playgroud)

以上给出了以下错误(MSC):

'case'标签跳过'newVal'的初始化

这似乎也是其他语言的限制.为什么会出现这样的问题?

c++ switch-statement

910
推荐指数
11
解决办法
26万
查看次数

在switch语句中声明变量

我看到了这个问题的一些答案,我明白了 - 你不能在一个内部声明和分配变量switch.但我想知道以下是否正确抛出错误说

错误:'int'之前的预期表达式

码:

switch (i) {
    case 0:
        int j = 1;
        break;
}
Run Code Online (Sandbox Code Playgroud)

为什么NSLog()在它之前拨打电话会导致没有错误?

switch (i) {
    case 0:
        NSLog(@"wtf");
        int j = 1;
        break;
}
Run Code Online (Sandbox Code Playgroud)

c variables declaration objective-c switch-statement

114
推荐指数
2
解决办法
3万
查看次数

我可以在Objective-C switch语句中声明变量吗?

我想我会失明,因为我无法弄清楚此代码中语法错误的位置:

if( cell == nil ) {
    titledCell = [ [ [ TitledCell alloc ] initWithFrame:CGRectZero
        reuseIdentifier:CellIdentifier ] autorelease
    ];

    switch( cellNumber ) {
        case 1:
            NSString *viewDataKey = @"Name";
etc...
Run Code Online (Sandbox Code Playgroud)

当我尝试编译它时,我在最后一行的'*'标记之前收到错误:语法错误.

对不起这个基本问题,但我错过了什么?

objective-c switch-statement

57
推荐指数
2
解决办法
2万
查看次数

Obj-C中的奇怪切换错误

我的代码中有这个switch语句:

switch(buttonIndex){
      case 0:
         [actionSheet dismissWithClickedButtonIndex:buttonIndex animated:YES];
         break;
    case 1:
        UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
        imagePicker.delegate = self;
        imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
        [self presentModalViewController:[imagePicker autorelease] animated:YES];
        break;
    default:
        [self openEmailViewInViewController:self];
}
Run Code Online (Sandbox Code Playgroud)

在案例1中的UIImagePickerController实例化中,我收到一个错误:

error:expected expression before 'UIImagePickerController'
Run Code Online (Sandbox Code Playgroud)

我不知道我做错了什么.思考?

哦,buttonIndex是一个NSInteger

iphone objective-c switch-statement

17
推荐指数
3
解决办法
6142
查看次数

Switch-Case:声明初始化和声明然后分配

在switch-case语句中,声明初始化无效,但允许声明然后赋值.如下面的代码片段所示.

这两种类型的初始化与编译器端有什么区别?为什么第一种初始化无效,第二种类型有效.

switch(val)  
{  
case 0:  
  int newVal = 42;  //Invalid
  break;
case 1:  
  int newVal2;      //Valid
  newVal2 = 42;  
  break;
case 2:
  break;
}
Run Code Online (Sandbox Code Playgroud)

c++ switch-statement jump-table

6
推荐指数
2
解决办法
3593
查看次数