#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;
}
Другие языки программирования и технологии
объясните как именно работает цикл (int i = 0; i < N; i++) в этом коде, почему нельзя написать i+1, вместо i++
вариант i=i+1 (i++) предполагает выполнения 3х операций
- загрузка переменной по адресу i в сумматор (регистр)
- операция сложения в регистре с единицей
- выгрузка из сумматора значения по адресу i
В варианте i+1 можно увидеть лишь 2ю операцию, поэтому синтаксический анализ эта запись не пройдёт. Компилятору надо знать, куда записать результат. Кроме того, даже в математической записи знак равенства обязательно должен присутствовать.
- загрузка переменной по адресу i в сумматор (регистр)
- операция сложения в регистре с единицей
- выгрузка из сумматора значения по адресу i
В варианте i+1 можно увидеть лишь 2ю операцию, поэтому синтаксический анализ эта запись не пройдёт. Компилятору надо знать, куда записать результат. Кроме того, даже в математической записи знак равенства обязательно должен присутствовать.
Ну почему нельзя? можно, но не забудь, что цикл работать не будет
for(певое; второе; третье) четвертое; разворачивается в
первое
while(второе)
{
четвертое;
третье;
}
и если третье не будет менять переменную цикла, то либо цикл "зациклится", либо переменную нужно менять в теле
for(int i=0;i<10;)cout<<i++;
for(певое; второе; третье) четвертое; разворачивается в
первое
while(второе)
{
четвертое;
третье;
}
и если третье не будет менять переменную цикла, то либо цикл "зациклится", либо переменную нужно менять в теле
for(int i=0;i<10;)cout<<i++;
i+1 — это математическая операция, она возвращает значение, но не меняет переменную i, а вот i++ сперва возвращает значение i, а потом её саму увеличивает на 1.
++ автоинкримент причем различается пред ++i и пост i++;
что делает авто инкремент он равнозначен i=i+1 можно было написать и i+=1 и i=i+1 но никак не i+1 присвоение не будет. Теперь про пред инкремент сначла происходит увеличения на 1 потом выполянются остальные действия, пост инкримент сделает наооборот
что делает авто инкремент он равнозначен i=i+1 можно было написать и i+=1 и i=i+1 но никак не i+1 присвоение не будет. Теперь про пред инкремент сначла происходит увеличения на 1 потом выполянются остальные действия, пост инкримент сделает наооборот
Можно написать for (int i = 0; i < N; i=i+1) { или for (int i = 0; i < N; ) { i++;
А кто этому мешает??? i++ и i=i+1 одно и тоже
Потому что выражение должно изменять значение переменной.
i+1 - не изменяет значение переменной i
Поэтому цикл будет крутиться до бесконечности.
Можешь написать так: i+=1 или i=i+1;
i+1 - не изменяет значение переменной i
Поэтому цикл будет крутиться до бесконечности.
Можешь написать так: i+=1 или i=i+1;
Похожие вопросы
- Помогите разобраться с кодом. Ошибка в строчке for (int i = 0, i > 100, i++) {
- Про цикл. int i = 5; i = ++i + ++i; Почему получается 14 а не 13?
- for(i=1,n,i++). Что делает этот цикл? Объясните по порядку..
- Есть код который находит простые числа. Почему мы проверяем "d*d <= n" ?
- while(!((str[i]>='0'&&str[i]<='9')||str[i]=='\0')) как перевести на человеческий язык это условие? - Язык си
- C++.Обычная задача : найти кол-во пар (x,y) , удовлетворяющих условию X^2+Y^2<N. Помогите оптимизировать.
- Написал небольшую программу, не могу понять почему не работает цикл while и оператор else
- объясните пожалуйста как работать с циклами с предусловием, с постусловием, с параметром
- Объясните чайнику на пальцах: Как работает цикл (for) в C# ?
- Этот знак вроде "сумма"... Но все равно не понимаю, что там делают "n" и "i=1"
for (int i = 0; i < N; i++)
for (int i = 0; i < N; ++i)
Т. к. никаких действий кроме увеличения i на 1 там нет.