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

объясните как именно работает цикл (int i = 0; i < N; i++) в этом коде, почему нельзя написать i+1, вместо i++

#include
using namespace std;
int main ()
{
const int N = 10;
int m[N] = {0};
for (int i = 0; i < N; i++){
cin >> m[i];
cout << m[i] << " ";
}
return 0;
}
вариант i=i+1 (i++) предполагает выполнения 3х операций
- загрузка переменной по адресу i в сумматор (регистр)
- операция сложения в регистре с единицей
- выгрузка из сумматора значения по адресу i
В варианте i+1 можно увидеть лишь 2ю операцию, поэтому синтаксический анализ эта запись не пройдёт. Компилятору надо знать, куда записать результат. Кроме того, даже в математической записи знак равенства обязательно должен присутствовать.
Роман Никитин
Роман Никитин
89 012
Лучший ответ
Ну почему нельзя? можно, но не забудь, что цикл работать не будет
for(певое; второе; третье) четвертое; разворачивается в

первое
while(второе)
{
четвертое;
третье;
}

и если третье не будет менять переменную цикла, то либо цикл "зациклится", либо переменную нужно менять в теле

for(int i=0;i<10;)cout<<i++;
i+1 — это математическая операция, она возвращает значение, но не меняет переменную i, а вот i++ сперва возвращает значение i, а потом её саму увеличивает на 1.
Сергей Мрищук
Сергей Мрищук
88 018
++ автоинкримент причем различается пред ++i и пост i++;
что делает авто инкремент он равнозначен i=i+1 можно было написать и i+=1 и i=i+1 но никак не i+1 присвоение не будет. Теперь про пред инкремент сначла происходит увеличения на 1 потом выполянются остальные действия, пост инкримент сделает наооборот
Артём Панов
Артём Панов
35 594
Алексей Головань В данном случае нет никакой разницы.
for (int i = 0; i < N; i++)
for (int i = 0; i < N; ++i)
Т. к. никаких действий кроме увеличения i на 1 там нет.
Можно написать for (int i = 0; i < N; i=i+1) { или for (int i = 0; i < N; ) { i++;
Игорь Губиев
Игорь Губиев
27 070
Сергей Мрищук =)
i = 0;
for (; i++ < N; ) {}
А кто этому мешает??? i++ и i=i+1 одно и тоже
Потому что выражение должно изменять значение переменной.
i+1 - не изменяет значение переменной i
Поэтому цикл будет крутиться до бесконечности.
Можешь написать так: i+=1 или i=i+1;