Префикс и постфикс в Kotlin
Давайте теперь посмотрим, что инкремент и декремент
можно записать двумя способами. Разберем их на
примере ++, для -- все будет так же.
В первом способе операция записывается после
имени переменной: num1++. Во втором -
перед именем: ++num1.
Первая форма называется постфиксной, а вторая - префиксной. Разница проявляется, когда операция стоит внутри другой.
В записи println(num1++) переменная сначала
выводится, а потом увеличивается на единицу.
В записи println(++num1) она сначала
увеличивается, а потом выводится.
В следующем примере первый println выведет
0, потому что сначала сработает вывод,
а уже затем переменная увеличится:
var num1 = 0
println(num1++) // 0
println(num1) // 1
А теперь переменная вначале увеличится, а уже затем будет вывод:
var num1 = 0
println(++num1) // 1
Такое поведение относится не только к выводу, но и к присваиванию:
var num1 = 0
var num2 = num1++ // в переменную num2 запишется 0
println(num2) // 0
println(num1) // 1
А теперь поменяем постфиксную форму на префиксную:
var num1 = 0
var num2 = ++num1 // в переменную num2 запишется 1
println(num2) // 1
Если операция выполняется отдельной командой, разницы между префиксной и постфиксной формами нет:
var num1 = 0
++num1
num1++
println(num1) // 2
Не запуская код, определите, что выведется на экран:
var num1 = 3
println(++num1)
Не запуская код, определите, что выведется на экран:
var num1 = 3
println(num1++)
Не запуская код, определите, что выведется на экран:
var num1 = 3
println(--num1)
Не запуская код, определите, что выведется на экран:
var num1 = 3
println(num1--)
Не запуская код, определите, что выведется на экран:
var num1 = 3
var num2 = ++num1
println(num1)
println(num2)
Не запуская код, определите, что выведется на экран:
var num1 = 3
var num2 = num1++
println(num1)
println(num2)
Не запуская код, определите, что выведется на экран:
var num1 = 3
var num2 = --num1
println(num1)
println(num2)
Не запуская код, определите, что выведется на экран:
var num1 = 3
var num2 = num1--
println(num1)
println(num2)
Не запуская код, определите, что выведется на экран:
var num1 = 3
num1++
var num2 = num1--
println(num1++)
println(--num2)