int i;
for (i =10; - -i;i >0)
cout <
Другие языки программирования и технологии
В этой программе можно переставить выражения, но результат работы почти не из-меняется. Почему?
потому что она ничего не делает? даже не компилится?
Единственно о чем здесь может быть вопрос. Так это о строке:
for (i =10; - -i;i >0)
там действительно можно переставлять местами, ми правильнее выглядеть должно так
for (i =10; i >0;- -i)
но и первая конструкция отработает. Давайте ее прочитаем:
1. Элемент здает начальное значение i равноое 10
2. Элемент сообщает что цикл будет работать до тех пор пока данное выражение не вернет false. Но. Давайте вспомним что такое false. фактически если выражение расположеное во второй позиции вернет 0 то цикл прекратится. При этом в данном выражении на каждой итерации i уменьшается на 1. И на определенном этапе i становится равным 0 и данная операция возвращает 0 и мы выходим из цикла.
3. Элемент просто сравнивает i c 0ю Это выражение вообще ни на чего не влияет. Т. е. первы вариант можно сократить до:
for (i =10; --i;)
Другое дело, так поступать в реальном программировании не надо. Т. к. ухудшает читабельность (с позиции человека) программы.
В нормальном же варианте:
1. Приравниваем i к 10
2. Сравниваем текущее значение i c 0
3. уменьшаем i на 1
Отличие будет. Во втором (правиьном) варианте цикл отработает еще при i=10. В неправильном как в вопросе цикл при i = 10 работать не будет. Т. е. количество итераций будет различаться на 1
Полностью идентично будет при правиьной записи for (i =9; i >0;- -i)
for (i =10; - -i;i >0)
там действительно можно переставлять местами, ми правильнее выглядеть должно так
for (i =10; i >0;- -i)
но и первая конструкция отработает. Давайте ее прочитаем:
1. Элемент здает начальное значение i равноое 10
2. Элемент сообщает что цикл будет работать до тех пор пока данное выражение не вернет false. Но. Давайте вспомним что такое false. фактически если выражение расположеное во второй позиции вернет 0 то цикл прекратится. При этом в данном выражении на каждой итерации i уменьшается на 1. И на определенном этапе i становится равным 0 и данная операция возвращает 0 и мы выходим из цикла.
3. Элемент просто сравнивает i c 0ю Это выражение вообще ни на чего не влияет. Т. е. первы вариант можно сократить до:
for (i =10; --i;)
Другое дело, так поступать в реальном программировании не надо. Т. к. ухудшает читабельность (с позиции человека) программы.
В нормальном же варианте:
1. Приравниваем i к 10
2. Сравниваем текущее значение i c 0
3. уменьшаем i на 1
Отличие будет. Во втором (правиьном) варианте цикл отработает еще при i=10. В неправильном как в вопросе цикл при i = 10 работать не будет. Т. е. количество итераций будет различаться на 1
Полностью идентично будет при правиьной записи for (i =9; i >0;- -i)
Похожие вопросы
- Ассемблер. Написать маленькую программу вычисления арифметического выражения. Подробности внутри.
- Почему эта программа Си выдает не такой результат?
- Помогите, разработать программу вычисления двух выражений, в ассемблереX= (a/2+b^2)/3*cY= (b^3-(12+x)/a)/c+2
- Скажите пожалуйста,программа Неро сильно перегружает системму при работе?
- Здравствуйте! Мне нужен дизайн сайта. Что мне должен прислать исполнитель в результате работы?
- Что не так с программой? Вначале работает нормально, но результат бесконечный, С++
- Написала программу, а он выдает неверный результат, c++
- Несколько основных программ , зная которые можно поступить на работу дизайнером-верстальщиком?
- переставил два харда на другой комп, установил винду, теперь эта проблема с многими файлами и папками на одном из дисков
- Переставил Виндовс 7, но почему-то куда-то исчез диск Д