zltigo 2 22 августа, 2011 Опубликовано 22 августа, 2011 · Жалоба то почему не работает while() - ему надо ОБЯЗАТЕЛЬНО указать условие?! как тут с логикой? Например, не стали преумножать способы сделать одно и то-же, сделав такую возможность для for(), как продвинутого варианта while(). Я, пожалуй, ничего против использования и for() без условия не имею, но но в стандарте не требуется. Лично я от отсутствия такой возможности неудобств не испытываю - мне достаточно одного канонического способа однозначного донесения моей мысли компилятору. на том, что это нелогично А я уже пытался объяснить Вам, что отсутствие на парковой скамейке таблички, о том, что на ней сидеть можно, равно, как и присутствие такой таблички, означает в конце-концов одно и то-же - сидеть на этой скамейке можно. Только отсутствие таблички с условиями выполнения цикла сидения на скамейке является для меня :) много более естественным в нормальной жизни. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ARV 1 22 августа, 2011 Опубликовано 22 августа, 2011 · Жалоба Например, не стали преумножать способы сделать одно и то-же, сделав такую возможность для for(), как продвинутого варианта while(). Я, пожалуй, ничего против использования и for() без условия не имею, но но в стандарте не требуется. Лично я от отсутствия такой возможности неудобств не испытываю - мне достаточно одного канонического способа однозначного донесения моей мысли компилятору. А я уже пытался объяснить Вам, что отсутствие на парковой скамейке таблички, о том, что на ней сидеть можно, равно, как и присутствие такой таблички, означает одно и то-же - сидеть на этой скамейке можно. Только отсутствие таблички с условиями выполнения цикла сидения на скамейке является много более естественным в нормальной жизни. странно... в одном месте отсутствие операнда приравнивается к ненулевому значению, а в другом - к ошибке... здесь, значит, варианты не поленились множить... как прокомментируете пример с аквалангом? записи while(акваланг != 0) и for(; акваланг !=0; ) читаются и понимаются абсолютно однозначно и логично, но for(;;) ?! теперь о ваших скамейках :) представим себе, что в парке вы увидели два вида скамеек: на одних есть надпись СИДЕТЬ МОЖНО, а другие - без оных надписей. это аналоги while(1) и for(;;). в ОБЫЧНОЙ ЖИЗНИ каждый, кто умеет читать, задумается - зачем это на некоторых есть надписи? может, на тех, где нет надписей, СИДЕТЬ НЕЛЬЗЯ?! ведь неспроста же пометили часть скамеек?! вам не кажется, что это логично? я уверен, что даже вы, для которого "отсутсвие таблички много более естественно", перед тем, как сесть на непомеченную скамейку тщательно ее ощупаете - а не покрашена ли она? :) в Си есть два цикла (скамейки), позволяющие сделать одно и то же: бесконечно выполняться (сидеть). но для одного нужно явное указание о бесконечности (табличка), для другого - не нужно. где же логика?! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 2 22 августа, 2011 Опубликовано 22 августа, 2011 · Жалоба но for(;;) Это значит, что наличие акваланга не требуется. В while(1) "1" это тоже не "акваланг", а некий не существующий в реальности костыль-заменитель всего и вся - акваланга, пива, женщин, воды ... Я не хочу продолжать этот ставший уже бессмысленным разговор. Свою позицию по while(1) я изложил уже неоднократно и на разные лады. Достаточно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Petka 0 22 августа, 2011 Опубликовано 22 августа, 2011 · Жалоба Это значит, что наличие акваланга не требуется. В while(1) "1" это тоже не "акваланг", а некий не существующий в реальности костыль-заменитель всего и вся - акваланга, пива, женщин, воды ... Я не хочу продолжать этот ставший уже бессмысленным разговор. Свою позицию по while(1) я изложил уже неоднократно и на разные лады. Достаточно. У меня к Вам один вопрос: почему в случае "for(;;)" компилятор НЕ должен генерировать warning а в случае "while(1)" должен? Чем эти случаи отличаются с точки зрения генерирования варнингов? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 2 22 августа, 2011 Опубликовано 22 августа, 2011 · Жалоба У меня к Вам один вопрос: почему в случае "for(;;)" компилятор НЕ должен генерировать warning а в случае "while(1)" должен? Чем эти случаи отличаются с точки зрения генерирования варнингов? Почитайте, наконец-то предыдущие посты. Там цитируется стандарт языка в котором все параметры for() являются необязательными. Компилятор соответствующий стандарту просто не имеет права возмущаться этим фактом. Почему while(1) является неграмотное выражением на которое желательно генерить warning - разжевано в десятках предыдущих постов. Я все сказал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ARV 1 22 августа, 2011 Опубликовано 22 августа, 2011 · Жалоба Там цитируется стандарт языка в котором ...Истинно, ибо верую... даже если в стандарте написана логическая несуразица, он не перестанет быть стандартом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Petka 0 22 августа, 2011 Опубликовано 22 августа, 2011 · Жалоба Почитайте, наконец-то предыдущие посты. Там цитируется стандарт языка в котором все параметры for() являются необязательными. Компилятор соответствующий стандарту просто не имеет права возмущаться этим фактом. Почему while(1) неграмотное выражение на которое желательно генерить warning - разжевано в десятках предыдущих постов. Я все сказал. Второй раз перечитал Ваши посты. Честно-говоря ничего кроме эмоций, "скамеек", "аквалангов", "коммерческих компиляторов" я там относящегося к делу не нашёл. Тыкните носом меня в пост со ссылкой на стандарт или хотя-бы на авторитетное толкование стандарта. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sergeeff 1 22 августа, 2011 Опубликовано 22 августа, 2011 · Жалоба Думается мне, что все, как часто это бывает в жизни, проще. Отцы-основатели K&R порешили сделать for(;;) бесконечным циклом. Может на первый взгляд все показалось логичным, может еще какие мысли были, только они и знают. А потом может и обнаружилась нелогичность, может нет, не менять же. Так все и осталось. Я застал по жизни людей, разрабатывавших языки программирования с карандашом в руках. Забавные ассемблеры (по-русски автокоды) с командами СУММ, ВЫВ, ВВ и прочее. Интересные были люди со своим особым стилем мышления. Так что все возможно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 23 августа, 2011 Опубликовано 23 августа, 2011 (изменено) · Жалоба Главная-таки проблема: если в стандарт закралась глупенькая недальновидность - все, поздно. Придется соблюдать. И после убрать таковую в следующей редакции стандарта невозможно в силу наработок Изменено 23 августа, 2011 пользователем _Pasha Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться