Перейти к содержанию
    

Передача параметров в функцию.

то почему не работает while() - ему надо ОБЯЗАТЕЛЬНО указать условие?! как тут с логикой?

Например, не стали преумножать способы сделать одно и то-же, сделав такую возможность для for(), как продвинутого варианта while(). Я, пожалуй, ничего против использования и for() без условия не имею, но но в стандарте не требуется. Лично я от отсутствия такой возможности неудобств не испытываю - мне достаточно одного канонического способа однозначного донесения моей мысли компилятору.

на том, что это нелогично

А я уже пытался объяснить Вам, что отсутствие на парковой скамейке таблички, о том, что на ней сидеть можно, равно, как и присутствие такой таблички, означает в конце-концов одно и то-же - сидеть на этой скамейке можно. Только отсутствие таблички с условиями выполнения цикла сидения на скамейке является для меня :) много более естественным в нормальной жизни.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Например, не стали преумножать способы сделать одно и то-же, сделав такую возможность для for(), как продвинутого варианта while(). Я, пожалуй, ничего против использования и for() без условия не имею, но но в стандарте не требуется. Лично я от отсутствия такой возможности неудобств не испытываю - мне достаточно одного канонического способа однозначного донесения моей мысли компилятору.

 

А я уже пытался объяснить Вам, что отсутствие на парковой скамейке таблички, о том, что на ней сидеть можно, равно, как и присутствие такой таблички, означает одно и то-же - сидеть на этой скамейке можно. Только отсутствие таблички с условиями выполнения цикла сидения на скамейке является много более естественным в нормальной жизни.

странно... в одном месте отсутствие операнда приравнивается к ненулевому значению, а в другом - к ошибке... здесь, значит, варианты не поленились множить...

как прокомментируете пример с аквалангом? записи while(акваланг != 0) и for(; акваланг !=0; ) читаются и понимаются абсолютно однозначно и логично, но for(;;) ?!

 

теперь о ваших скамейках :) представим себе, что в парке вы увидели два вида скамеек: на одних есть надпись СИДЕТЬ МОЖНО, а другие - без оных надписей. это аналоги while(1) и for(;;). в ОБЫЧНОЙ ЖИЗНИ каждый, кто умеет читать, задумается - зачем это на некоторых есть надписи? может, на тех, где нет надписей, СИДЕТЬ НЕЛЬЗЯ?! ведь неспроста же пометили часть скамеек?! вам не кажется, что это логично? я уверен, что даже вы, для которого "отсутсвие таблички много более естественно", перед тем, как сесть на непомеченную скамейку тщательно ее ощупаете - а не покрашена ли она? :)

в Си есть два цикла (скамейки), позволяющие сделать одно и то же: бесконечно выполняться (сидеть). но для одного нужно явное указание о бесконечности (табличка), для другого - не нужно. где же логика?!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

но for(;;)

Это значит, что наличие акваланга не требуется. В while(1) "1" это тоже не "акваланг", а некий не существующий в реальности костыль-заменитель всего и вся - акваланга, пива, женщин, воды ...

Я не хочу продолжать этот ставший уже бессмысленным разговор. Свою позицию по while(1) я изложил уже неоднократно и на разные лады. Достаточно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это значит, что наличие акваланга не требуется. В while(1) "1" это тоже не "акваланг", а некий не существующий в реальности костыль-заменитель всего и вся - акваланга, пива, женщин, воды ...

Я не хочу продолжать этот ставший уже бессмысленным разговор. Свою позицию по while(1) я изложил уже неоднократно и на разные лады. Достаточно.

У меня к Вам один вопрос: почему в случае "for(;;)" компилятор НЕ должен генерировать warning а в случае "while(1)" должен? Чем эти случаи отличаются с точки зрения генерирования варнингов?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня к Вам один вопрос: почему в случае "for(;;)" компилятор НЕ должен генерировать warning а в случае "while(1)" должен? Чем эти случаи отличаются с точки зрения генерирования варнингов?

Почитайте, наконец-то предыдущие посты. Там цитируется стандарт языка в котором все параметры for() являются необязательными. Компилятор соответствующий стандарту просто не имеет права возмущаться этим фактом. Почему while(1) является неграмотное выражением на которое желательно генерить warning - разжевано в десятках предыдущих постов.

Я все сказал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Там цитируется стандарт языка в котором ...
Истинно, ибо верую...

 

 

даже если в стандарте написана логическая несуразица, он не перестанет быть стандартом.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Почитайте, наконец-то предыдущие посты. Там цитируется стандарт языка в котором все параметры for() являются необязательными. Компилятор соответствующий стандарту просто не имеет права возмущаться этим фактом. Почему while(1) неграмотное выражение на которое желательно генерить warning - разжевано в десятках предыдущих постов.

Я все сказал.

Второй раз перечитал Ваши посты. Честно-говоря ничего кроме эмоций, "скамеек", "аквалангов", "коммерческих компиляторов" я там относящегося к делу не нашёл. Тыкните носом меня в пост со ссылкой на стандарт или хотя-бы на авторитетное толкование стандарта.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Думается мне, что все, как часто это бывает в жизни, проще. Отцы-основатели K&R порешили сделать for(;;) бесконечным циклом. Может на первый взгляд все показалось логичным, может еще какие мысли были, только они и знают. А потом может и обнаружилась нелогичность, может нет, не менять же. Так все и осталось.

 

Я застал по жизни людей, разрабатывавших языки программирования с карандашом в руках. Забавные ассемблеры (по-русски автокоды) с командами СУММ, ВЫВ, ВВ и прочее. Интересные были люди со своим особым стилем мышления. Так что все возможно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Главная-таки проблема: если в стандарт закралась глупенькая недальновидность - все, поздно. Придется соблюдать. И после убрать таковую в следующей редакции стандарта невозможно в силу наработок

Изменено пользователем _Pasha

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...