Jump to content

    
Sign in to follow this  
tuma

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

Recommended Posts

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

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

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

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

Share this post


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

 

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

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

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

 

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

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

Share this post


Link to post
Share on other sites
но for(;;)

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

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

Share this post


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

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

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

Share this post


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

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

Я все сказал.

Share this post


Link to post
Share on other sites
Там цитируется стандарт языка в котором ...
Истинно, ибо верую...

 

 

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

 

 

Share this post


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

Я все сказал.

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

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites

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

Edited by _Pasha

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this