Инструкция Java Switch с оператором инкремента

75
5

int k=0;

switch (k++) {
case 0: System.out.println("0 is "+k);
}

Вывод:

0 - 1

Почему 1? Он все еще находится в операторе switch и должен быть увеличен после выхода из него.

спросил(а) 2021-01-19T11:29:01+03:00 2 месяца, 3 недели назад
1
Решение
86

Postfix означает, что он будет увеличен после оценки, а не после текущего блока. В этом случае он оценивается, увеличивает k, а затем переходит к оценке. Точно так, как должно.

ответил(а) 2021-01-19T11:29:01+03:00 2 месяца, 3 недели назад
44

Первое, что делает оператор switch, - это процесс выражения (k++). Полученный результат сравнивается со значением (-ами) случая. Но поскольку k++ уже обработан, k имеет значение 1. Так как это постфиксный оператор, возвращаемое значение является значением до его приращения. Таким образом, возвращается 0, хотя значение после выполнения выражения равно 1.

ответил(а) 2021-01-19T11:29:01+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема