|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
09.01.2021, 14:27 | #1 |
Регистрация: 19.01.2019
Сообщений: 5
|
Помогите с вопросом для самопроверки.
Добрый день. Циклы. Застрял в самом начале, ступор.
Дан следующий цикл: Код:
Ответ: при данных условиях цикл for является бесконечным, поэтому строка будет выполняться бесконечное число раз. Комментарий - i будет бесконечно удовлетворять условию while(i < j), будет всегда выдавать true т.к. i всегда будет меньше j потому что j с каждым кругом цикла while будет только приращаться j = j * 2; а i оставаться равной 0. Но в один момент переменная j станет больше максимального значения Int32 и в непроверяемом контексте переполнение приводит к неявному взятию остатка по модулю 2^n. Число j станет отрицательным и выйдет из цикла while, а потом уже произойдет зацикливание for. Вот что не понимаю: почему i всегда будет равно 0? Ведь во втором круге цикла for i=j-i=4-0=4, да и еще потом i=i*2=4*2=8? И пошло поехало. Сколько раз не считал, на пятом цикле i=32 и цикл останавливается.... |
11.01.2021, 04:33 | #2 |
Регистрация: 19.01.2019
Сообщений: 5
|
Вопрос снят...
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
помогите пожалуйста с вопросом | Светлана1991 | Помощь студентам | 1 | 24.03.2015 19:41 |
Помогите разобраться с вопросом по СИ. | Pug_from_Mordor | Помощь студентам | 8 | 08.01.2015 08:00 |
помогите с простым вопросом | Тарабаровъ | Microsoft Office Access | 7 | 30.12.2009 20:12 |
помогите с вопросом | darika | Паскаль, Turbo Pascal, PascalABC.NET | 11 | 07.07.2009 16:34 |
Помогите с вопросом на C/C++ | dilik | Общие вопросы C/C++ | 1 | 07.01.2009 17:42 |