Циклы
for (int i = 0; i < 10; ++i)
System.out.println(i);
И циклы
for (int i = 0; i < 10; i++)
System.out.println(i);
Ничем не отличаются по поведению. Почему бы в первом сначала не увеличивать i на 1 а потом продолжать или начинать цикл? Это было бы полезной языковой конструкцией.
По вашему мнению, почему во многих языках программирования не предусмотрено такое?
Java
Конструкция Java: i++ и ++i в циклах for
Потому, что в большинстве C-style языков (к коим относится Java) не существует полноценного цикла со счётчиком и на месте ++i может стоять абсолютно любое выражение. Фактически, for - лишь синтаксический сахар для while.
В Algol-style языках нормальный цикл со счётчиком существует и там в for задаются 3 выражения: начальное значение, конечное значение и шаг приращения переменной:
for i := 1 to 35 by 4 do
задаёт цикл от 1 до 35 с шагом 4
В Python цикла со счётчиком тоже нет - там for используется для исключительно для итерации по элементам коллекции. Но там есть генератор, выдающий последовательность значений с заданным шагом, который можно использовать для имитации цикла со счётчиком:
for i in range(1, 36, 4):
В Algol-style языках нормальный цикл со счётчиком существует и там в for задаются 3 выражения: начальное значение, конечное значение и шаг приращения переменной:
for i := 1 to 35 by 4 do
задаёт цикл от 1 до 35 с шагом 4
В Python цикла со счётчиком тоже нет - там for используется для исключительно для итерации по элементам коллекции. Но там есть генератор, выдающий последовательность значений с заданным шагом, который можно использовать для имитации цикла со счётчиком:
for i in range(1, 36, 4):
Потому что в ЯП "С" ( и аналогичных по синтаксису ) никто не мешает вообще использовать любые конструкции для "последнего" оператора цикла
Например
for(n=12345;n;n/=10)arr[n%10]++;
Заполняет массив количеством цифр в числе
Для данного варианта цикла тоже будем придумывать дополнительный способ записи?
Например
for(n=12345;n;n/=10)arr[n%10]++;
Заполняет массив количеством цифр в числе
Для данного варианта цикла тоже будем придумывать дополнительный способ записи?
Потому что вы не понимаете последовательность интрукций в цикле
Цикл начинается ровно с того числа, которое указано в инициализации
Префиксный или постфиксный инкремент на это влиять не может
Цикл начинается ровно с того числа, которое указано в инициализации
Префиксный или постфиксный инкремент на это влиять не может
Цикл:
for (выражение1; выражение 2; выражение 3)
тело цикла;
.
работает так:
1.изначально и только 1 раз выполняется выражение1;
2.потом выражение 2;
3.потом тело цикла;
4.потом выражение 3;
и потом с шага 2 пока выражение 2 истинно
.
for (int i = 0; i < 10; ++i)
for (выражение1; выражение 2; выражение 3)
тело цикла;
.
работает так:
1.изначально и только 1 раз выполняется выражение1;
2.потом выражение 2;
3.потом тело цикла;
4.потом выражение 3;
и потом с шага 2 пока выражение 2 истинно
.
for (int i = 0; i < 10; ++i)
А кто его знает?! Придумали всякое...
Антон Шулунов
Я не понял вас.
Похожие вопросы
- Как работает такой цикл for? for (i=1;i>=n;i--) И для каких N он может использоваться?
- Допишите условие цикла for, чтобы заполнить массив случайными тратами
- Как избавиться без вложенного цикла в java
- Всем привет. Помогите плз. Мне нужна помощь тех кто действительно хорошо знает Java т. к мне нужно выбрать один из курсов
- Помогите доделать код на java. В форму пользователь вводит символ, который нужно заменить на #.
- Не выводит изображение в JAVA
- Язык JAVA - ЗАДАЧКА НА ЦИКЛЫ
- Java проблема с рефлексией.
- Java Developer vs Android Developer. Куда дальше?
- Пишут ли стартапы на Java?