Другие языки программирования и технологии

Чем различаются ++i и i++, нужны точные различия

Префиксная форма сначала увеличивает, потом возвращает значение, постфиксная - наоборот.
Олег Подкорытов
Олег Подкорытов
99 354
Лучший ответ
Добавлю, что префиксная форма не создаёт временного объекта для хранения промежуточного значения, и тем самым работает быстрее.
Вячеслав Носов
Вячеслав Носов
99 130
Еще добавлю, что префиксный ++ возвращает lvalue, т. е. в результат выполнения префиксного "++" в некотором смысле "можно писать", а не просто оттуда читать.
Сравните:

++++i; // OK

i++++; // ERROR: lvalue required as increment operand
Muxammadali Xalbaev
Muxammadali Xalbaev
19 662
Шикарный код. . где смысл формы инкремента не раскрывается ни как.

Префиксная форма, значение переменной увеличивается до использования в оценке выражения
Что бы всё это лучше понять, проще смотреть на таблицу приоритетов и ассоциации
i = 5;
cout << ++i;
Выведет 6, т. к. префиксный инкремент имеет более высокий приоритет исполнения нежели <<

i = 5;
cout << sqrt(2 + (10 - 2*3 + ++i));
Здесь так же по приоритету операций i получит инкремент, i = 6, и уже потом будет произведена дальнейшая оценка выражения.

Постфиксная форма, подразумевает инкремент в самый последний момент.
i = 5;
cout << sqrt(2 + (10 - 2*3 + i++));
тут производится оценка выражения, i так и остаётся 5, а вот уже после того как cout выведет инфу, производится инкремент.

i = 0;
cout << i++;
Выведет 0 и только после производится инкремент

С декрементом всё тоже самое.
Сравните два кода
i = 5;
x = ++i;
cout << x;

i = 5;
x = i++;
cout << x;
Shuhrat Mutalov
Shuhrat Mutalov
106