Можно ли сделать объявление типа в операторе Switch? - PullRequest
7 голосов
/ 15 июля 2011

Я использую XCode 4.0.2 для проекта iOS4.

У меня есть стандартное выражение "Switch"

switch (i) {
    case 0:
        int a = 0;
    break
    ...
}

Это дает мне ошибку "Ожидаемое выражение" на int a = 0;.

Очень странно, что «Switch» работает нормально, если я предшествую объявлению типа простым оператором, подобным этому

switch (i) {
    case 0:
        b = 0;
        int a = 0;
    break
    ...
}  

в этом случае компилятор не выдает ошибку (только предупреждение «неиспользуемая переменная a»).

Как это может быть?

Спасибо.

Ответы [ 4 ]

6 голосов
/ 15 июля 2011

Попробуйте что-то вроде

switch (i) {
    case 0:
    {
        int a = 0;
    }
    break
    ...
}
1 голос
/ 15 июля 2011

Вам нужно открыть новую область с помощью { }, чтобы объявить новые переменные:

switch (i) {
    case 0: {
        int a = 0;
        break;
    }
}
1 голос
/ 15 июля 2011

Просто заключите оператор case в фигурные скобки:

switch (i) {
    case 0: {
        int a = 0;
        break; 
    }

    ...
}
0 голосов
/ 15 июля 2011

Вы можете объявить переменные как

switch (i) {
    case 0:
        { //User brackets 
            int a = 0;
        }
    break
    ...
}
...