Инструкция 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 недели назад
добавить комментарий
пожаловаться
Решение
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 недели назад
добавить комментарий
пожаловаться
Ваш ответ
- Вопросы
- Switch-statement
- Инструкция Java Switch с оператором инкремента