powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / while(val != max) или while(val < max)
14 сообщений из 39, страница 2 из 2
while(val != max) или while(val < max)
    #39183097
BagaBaga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется, что такая нотация идёт из обобщённых алгоритмов STL.
Если у тебя while(i != j) {... ++j;}, то для изменения порядка обхода (произвольной) структуры с прямого на обратный не потребуется ничего менять в алгоритме - только подай в шаблон reverse iterator вместо обычного forward iterator. А вот с '<' вместо '!=' так уже не получится... так сказать, расплата за "гибкость-универсальность".
...
Рейтинг: 0 / 0
while(val != max) или while(val < max)
    #39183145
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BagaBagaМне кажется, что такая нотация идёт из обобщённых алгоритмов STL.скорее всего, ибо на некоторых итераторах оператор < не реализуется, а оператор != - допустим всегда.
...
Рейтинг: 0 / 0
while(val != max) или while(val < max)
    #39183158
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.NET Чтобы разобраться во всех ли случаях вариант с использованием != однозначно лучше.

Давайте разберёмся во всех случаях. В вашем случае инкремент равен единице. В других случаях он может быть практически любым. Вы рассматриваете только один вариант из очень большого числа(пусть он и встречается столько раз, как все остальные вместе взятые), потому никаких выводов делать пожалуй не стоит.
А эту историю с signed/unsigned знаю даже, далеко не самый опытный в Си человек
...
Рейтинг: 0 / 0
while(val != max) или while(val < max)
    #39183532
.NET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercury.NET Чтобы разобраться во всех ли случаях вариант с использованием != однозначно лучше.

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

Пожалуй что не стоит, ведь может быть не инкремент, а декримент, и тогда вообще надо открывать новую тему.
Просто хотелось понять предпочтение авторов учебников (хотя вообще есть ли оно) операции "!=" над операцией "<"
это вопрос больше методический или практический.

SashaMercuryА эту историю с signed/unsigned знаю даже, далеко не самый опытный в Си человек
Да я тоже "знаю" но периодически забываю, так как программировал профессионально только на C#,
а там всё наоборот, т. е. если в выражении участвует знаковый и беззнаковый, то оба приводятся к знаковому.
...
Рейтинг: 0 / 0
while(val != max) или while(val < max)
    #39183548
.NET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychBagaBagaМне кажется, что такая нотация идёт из обобщённых алгоритмов STL.скорее всего, ибо на некоторых итераторах оператор < не реализуется, а оператор != - допустим всегда.

Та же история что и с постфиксным и префиксным инкрементом для числовых всё равно ++x или x++,
а для итераторов нет, поэтому считается что писать ++x предпочтительнее в любых случаях.
...
Рейтинг: 0 / 0
while(val != max) или while(val < max)
    #39184318
.NET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В одном учебнике пишут, что использование "val != max" предпочтительнее "val < max",
потому что в этом случае мы будем уверены, что после выполнения цикла val будет в точности равно мах,
во втором случае оно может быть и больше.
Другими словами "val != max" явно декларирует, что в результате работы цикла не предполагается ни в каком случае выход val
за границу max. Это упрощает понимание кода, тому кто будет читать его.
...
Рейтинг: 0 / 0
while(val != max) или while(val < max)
    #39184332
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.NETВ одном учебнике пишут, что использование "val != max" предпочтительнее "val < max",
потому что в этом случае мы будем уверены, что после выполнения цикла val будет в точности равно мах,
во втором случае оно может быть и больше.
Другими словами "val != max" явно декларирует, что в результате работы цикла не предполагается ни в каком случае выход val
за границу max. Это упрощает понимание кода, тому кто будет читать его.Что значит упрощает понимание? А с чего вдруг человек увидевший while(val < max) должен думать что по выходу из цикла val==max???
...
Рейтинг: 0 / 0
while(val != max) или while(val < max)
    #39184353
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.NET, нарисуй вещественную ось. И покрытие двух условий. Одно из них - это выколотая точка.
Другое - луч от точки до бесконечности не включая саму точку.
...
Рейтинг: 0 / 0
while(val != max) или while(val < max)
    #39184390
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.NETВ одном учебнике пишут

А что за учебник ?
...
Рейтинг: 0 / 0
while(val != max) или while(val < max)
    #39184512
.NET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl.NETВ одном учебнике пишут, что использование "val != max" предпочтительнее "val < max",
потому что в этом случае мы будем уверены, что после выполнения цикла val будет в точности равно мах,
во втором случае оно может быть и больше.
Другими словами "val != max" явно декларирует, что в результате работы цикла не предполагается ни в каком случае выход val
за границу max. Это упрощает понимание кода, тому кто будет читать его.Что значит упрощает понимание? А с чего вдруг человек увидевший while(val < max) должен думать что по выходу из цикла val==max???
Он и не будет так думать (будет находиться в неведении), если использовать val < max.
Он будет думать (уверен), что val==max, если используется val != max.
Поэтому если по задумке программиста пишущего код val не должен выходить за границу max,
то и не стоит давать читающему код повода так думать используя val < max в условии выхода из цикла.

SashaMercuryА что за учебник ?


Accelerated C++ Andrew Koening, Barbara Moo
...
Рейтинг: 0 / 0
while(val != max) или while(val < max)
    #39184533
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Процитируйте пожалуйста, если вас не сильно затруднит. Первый автор известный товарищ, только фамилия у него Koenig, если не ошибаюсь, а второго я не знаю.
...
Рейтинг: 0 / 0
while(val != max) или while(val < max)
    #39184536
jmp_original
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
.NETWhite Owlпропущено...
Что значит упрощает понимание? А с чего вдруг человек увидевший while(val < max) должен думать что по выходу из цикла val==max???
Он и не будет так думать (будет находиться в неведении), если использовать val < max.
Он будет думать (уверен), что val==max, если используется val != max.
Поэтому если по задумке программиста пишущего код val не должен выходить за границу max,
то и не стоит давать читающему код повода так думать используя val < max в условии выхода из цикла.
*Делает наивное лицо* А разве в Си не принято, что val вообще не существует при выходе из цикла?
...
Рейтинг: 0 / 0
while(val != max) или while(val < max)
    #39184550
YesSql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
.NETОн и не будет так думать
.NETОн будет думать

Ты уж определись думает твой кролик или нет.
...
Рейтинг: 0 / 0
while(val != max) или while(val < max)
    #39184722
.NET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryПроцитируйте пожалуйста, если вас не сильно затруднит. Первый автор известный товарищ, только фамилия у него Koenig, если не ошибаюсь, а второго я не знаю.

Да, фамилия первого автора Koenig, я ошибся.

Another reason to count from 0 is that we have to option of using != as our comparison
instead of <=. This distinction may seem trivial, but it affects what we know about the state
of program then loop finished. For example, if the condition is r != rows , then when the loop
finishes, we know that r == rows . Because the invariant says that we have written
r rows of output, we know that we have written exactly rows rows all told.
On the other hand, if the condition is r <= rows , then all we can prove is that we have written
at least rows rows of output. For all we know, we might have written more.
...
Рейтинг: 0 / 0
14 сообщений из 39, страница 2 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / while(val != max) или while(val < max)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]