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