Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Почему нельзя сделать инкримент вместо прибавления единицы?

Гавриил Стробыкин Стробыкин Ученик (106), открыт 2 недели назад
Создал динамический массив, попытался его заполнит начиная с единицы,
но почему-то выводятся какие- то странные числа. Почему когда я пытаюсь делать инкримент все идет через одно место?
5 ответов
kaiu Высший разум (117660) 2 недели назад
у тебя i++ и так в for и во 2 случае выходит по сути i+=2 а не 1
Пример:
a = i+1;
a = i++; // это можно как 2 команды представить a = i; i = i+1; // так ясно?
Айран Просветленный (27258) 2 недели назад
у оператора инкремента есть побочный эффект
DefГений (63671) 2 недели назад
И какой же?
Def Гений (63671) 2 недели назад
Когда создаешь массив в стеке или куче - его значения не инициализированы, там лежит случайный мусор. Потом ты к этому мусору добавляешь единицу.

Соответственно, нужно либо еще дополнительным циклом пройтись и занулить все элементы перед инкрементом, либо делать так, как сделана инициализация в первом случае.
Krab Bark Искусственный Интеллект (294639) 2 недели назад
В цикле при каждом проходе i инкрементируется дважды. Потому что i++, в отличие от i+1, меняет значение i.
Капиталист Коллаборация Мудрец (11820) 2 недели назад
Инкремент — это увеличение значения инкрементируемой переменной на единицу. Вот и думай.
Похожие вопросы