Другие языки программирования и технологии
Чем различаются ++i и i++, нужны точные различия
Префиксная форма сначала увеличивает, потом возвращает значение, постфиксная - наоборот.
Добавлю, что префиксная форма не создаёт временного объекта для хранения промежуточного значения, и тем самым работает быстрее.
Еще добавлю, что префиксный ++ возвращает lvalue, т. е. в результат выполнения префиксного "++" в некотором смысле "можно писать", а не просто оттуда читать.
Сравните:
++++i; // OK
i++++; // ERROR: lvalue required as increment operand
Сравните:
++++i; // OK
i++++; // ERROR: lvalue required as increment operand
Шикарный код. . где смысл формы инкремента не раскрывается ни как.
Префиксная форма, значение переменной увеличивается до использования в оценке выражения
Что бы всё это лучше понять, проще смотреть на таблицу приоритетов и ассоциации
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;
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;
i = 5;
x = ++i;
cout << x;
i = 5;
x = i++;
cout << x;
Похожие вопросы
- объясните как именно работает цикл (int i = 0; i < N; i++) в этом коде, почему нельзя написать i+1, вместо i++
- Помогите разобраться с кодом. Ошибка в строчке for (int i = 0, i > 100, i++) {
- Про цикл. int i = 5; i = ++i + ++i; Почему получается 14 а не 13?
- Вопрос по Си. if ((i++)==10) и i++ if (i==10) будет ли первый пример работать быстрее чем второй?
- Excel В одной ячейке значение к примеру 20. Необходимо выполнить (1+2)^i+1 (i+1 должен продолжаться до 20 включ.)
- И все же не пойму, в чем разница между i++ и ++i
- Чем различаются HTML-1,2,3
- Чем различаются регистры и откуда эти их названия??
- помогите пожалуйста кто смыслит в C# или в C++, очень нужна ваша помощь, нужен код программы, точнее двух
- Зачем в c# нужен оператор ^ (OR)? В чем различие от ||?