Префикс и постфикс в C++
Инкремент и декремент записывают двумя способами.
В постфиксном виде знак стоит после имени:
num1++. В префиксном виде знак стоит
перед именем: ++num1.
В следующем примере первый вывод покажет
0: сначала значение печатается, и только
потом переменная увеличивается:
int num1 = 0;
std::cout << num1++ << "\n"; // выведет 0
std::cout << num1 << "\n"; // выведет 1
Теперь переменная увеличивается до вывода:
int num1 = 0;
std::cout << ++num1 << "\n"; // выведет 1
Так же устроено присваивание. В num2
попадает старое значение, а num1
увеличивается следом:
int num1 = 0;
int num2 = num1++; // в num2 запишется 0
std::cout << num2 << "\n"; // выведет 0
std::cout << num1 << "\n"; // выведет 1
В префиксной форме в num2 сразу
попадает уже увеличенное значение:
int num1 = 0;
int num2 = ++num1; // в num2 запишется 1
std::cout << num2 << "\n"; // выведет 1
Если операция стоит на отдельной строке, разницы между формами нет:
int num1 = 0;
++num1;
num1++;
std::cout << num1 << "\n"; // выведет 2
Не запуская код, определите, что выведется на экран:
int num1 = 3;
std::cout << ++num1 << "\n";
Не запуская код, определите, что выведется на экран:
int num1 = 3;
std::cout << num1++ << "\n";
Не запуская код, определите, что выведется на экран:
int num1 = 3;
std::cout << --num1 << "\n";
Не запуская код, определите, что выведется на экран:
int num1 = 3;
std::cout << num1-- << "\n";
Не запуская код, определите, что выведется на экран:
int num1 = 3;
int num2 = ++num1;
std::cout << num1 << "\n";
std::cout << num2 << "\n";
Не запуская код, определите, что выведется на экран:
int num1 = 3;
int num2 = num1++;
std::cout << num1 << "\n";
std::cout << num2 << "\n";