Ну это в некотором смысле классика жанра...
Прикольнее, когда честный (казалось бы) цикл for (i = a; i < b; i++) превращается в бесконечный. Как это может произойти — подумай сам
Здравствуйте, DOOM, Вы писали: DOO>Прикольнее, когда честный (казалось бы) цикл for (i = a; i < b; i++) превращается в бесконечный. Как это может произойти — подумай сам
i типа char или short?
Здравствуйте, DOOM, Вы писали:
DOO>Здравствуйте, misewk, Вы писали:
M>>Пишу проект — начал виснуть , начал искать ошибку, потратил много времени , когда нашел чуть не заплакал :
M>>
DOO>Ну это в некотором смысле классика жанра... DOO>Прикольнее, когда честный (казалось бы) цикл for (i = a; i < b; i++) превращается в бесконечный. Как это может произойти — подумай сам
как то аналогично искал ошибку в JScript нашел в строчке:
for (int i = 0; i < a; i++);
Здравствуйте, Aptekar, Вы писали:
A>Здравствуйте, DOOM, Вы писали: DOO>>Прикольнее, когда честный (казалось бы) цикл for (i = a; i < b; i++) превращается в бесконечный. Как это может произойти — подумай сам A>i типа char или short?
Слишком легко. А вот когда i — с плавающей точкой... Для плавающей точки существует момент, когда a+1 = a...
Здравствуйте, DOOM, Вы писали:
DOO>Здравствуйте, Aptekar, Вы писали:
A>>Здравствуйте, DOOM, Вы писали: DOO>>>Прикольнее, когда честный (казалось бы) цикл for (i = a; i < b; i++) превращается в бесконечный. Как это может произойти — подумай сам A>>i типа char или short? DOO>Слишком легко. А вот когда i — с плавающей точкой... Для плавающей точки существует момент, когда a+1 = a...
И тут встрял старый пасквилянт: "Ну ежели язык программирования позволяет переменную цикла объявлять как флоат... то это называется ПРЯМОЕ ВРЕДИТЕЛЬСТВО"
A>>Здравствуйте, DOOM, Вы писали: DOO>>>Прикольнее, когда честный (казалось бы) цикл for (i = a; i < b; i++) превращается в бесконечный. Как это может произойти — подумай сам A>>i типа char или short? DOO>Слишком легко. А вот когда i — с плавающей точкой... Для плавающей точки существует момент, когда a+1 = a...
Это тоже слишком легко. А вот когда i — unsigned, вот тогда уже интереснее.
DOO>Ну это в некотором смысле классика жанра... DOO>Прикольнее, когда честный (казалось бы) цикл for (i = a; i < b; i++) превращается в бесконечный. Как это может произойти — подумай сам
for (i = a; i < b; i++)
{
// здесь наши чудесные вычисления
...
b++;
}
Здравствуйте, DOOM, Вы писали:
DOO>Здравствуйте, misewk, Вы писали:
M>>Пишу проект — начал виснуть , начал искать ошибку, потратил много времени , когда нашел чуть не заплакал :
M>>
DOO>Ну это в некотором смысле классика жанра... DOO>Прикольнее, когда честный (казалось бы) цикл for (i = a; i < b; i++) превращается в бесконечный. Как это может произойти — подумай сам
Здравствуйте, Alexey Borodin, Вы писали:
DOO>>Прикольнее, когда честный (казалось бы) цикл for (i = a; i < b; i++) превращается в бесконечный. Как это может произойти — подумай сам AB>Если a>b первоначально.
в таком случае просто не будет ни одной итерации. и что?
Здравствуйте, DSD, Вы писали:
DSD>Здравствуйте, Alexey Borodin, Вы писали:
DOO>>>Прикольнее, когда честный (казалось бы) цикл for (i = a; i < b; i++) превращается в бесконечный. Как это может произойти — подумай сам AB>>Если a>b первоначально. DSD>в таком случае просто не будет ни одной итерации. и что?
Ну, да ошибся. Баг есть, но бесконечным цикл не становится.
Собственно, тогда другая версия — тип i или b не является стандартным, а представляет из себя какой-нибудь класс, итератор например, где неправильно перегружена операция < или ++.
Здравствуйте, AlexWlad, Вы писали:
AW>И тут встрял старый пасквилянт: "Ну ежели язык программирования позволяет переменную цикла объявлять как флоат... то это называется ПРЯМОЕ ВРЕДИТЕЛЬСТВО"
В скрипте можно просто не уследить, когда у тебя int станет float'ом...
Здравствуйте, Andrew S, Вы писали:
DOO>>>>Прикольнее, когда честный (казалось бы) цикл for (i = a; i < b; i++) превращается в бесконечный. Как это может произойти — подумай сам AS>Это тоже слишком легко. А вот когда i — unsigned, вот тогда уже интереснее.
Если бы в условии было бы i <= b, то при b = максимальное значение для данного типа цикл превращался бы в бесконечный.
DOO>>>>>Прикольнее, когда честный (казалось бы) цикл for (i = a; i < b; i++) превращается в бесконечный. Как это может произойти — подумай сам AS>>Это тоже слишком легко. А вот когда i — unsigned, вот тогда уже интереснее.
DK>Если бы в условии было бы i <= b, то при b = максимальное значение для данного типа цикл превращался бы в бесконечный.