Помощь
-
Поиск
-
Пользователи
-
Календарь
Полная версия этой страницы:
С, оператор for
Форум разработчиков электроники ELECTRONIX.ru
>
Сайт и форум
>
В помощь начинающему
>
Программирование
ViKo
Nov 20 2014, 10:26
Правильно я понимаю, что
Код
for (; *pat != ':'; pat++)
не идентичен
Код
for (; *pat++ != ':'; )
Потому что в первом случае указатель остановится на символе ':', а во втором - за ним.
P.S. гы-гы, движок форума удаляет в коде пробелы после открытой скобки.
andrew_b
Nov 20 2014, 11:38
В первом случае инкремент указателя делается после проверки условия. Во втором случае указатель инкрементируется безусловно.
ViKo
Nov 20 2014, 11:43
Цитата(andrew_b @ Nov 20 2014, 14:38)
В первом случае инкремент указателя делается после проверки условия.
Не просто после проверки, а после проверки, выполнения тела цикла (в данном случае он пустой), и вот тогда...
x893
Nov 21 2014, 02:28
А ведь можно посмотреть код и не тратить время
alexeyv
Nov 21 2014, 04:24
я мало пользуюсь циклом фор, в основном вайлом
первое эквивалентно
Код
while(*pat != ':')
{
// работа с с тем же самым pat
........
pat++;
}
второе -
Код
while(*pat++ != ':')
{
// работа с инкрементированным pat
........
}
Второй случай не совсем верен, т.к. указатель может попасть за границы строки/массива, и может возникнуть трудноуловимая ошибка
ViKo
Nov 21 2014, 10:25
Цитата(alexeyv @ Nov 21 2014, 07:24)
Второй случай не совсем верен, т.к. указатель может попасть за границы строки/массива, и может возникнуть трудноуловимая ошибка
Оба опасны, как и всякий указатель
Кто-нибудь, скажите твердое "да" на мой вопрос.
XVR
Nov 21 2014, 10:29
Цитата(ViKo @ Nov 21 2014, 13:25)
Кто-нибудь, скажите твердое "да" на мой вопрос.
Твердое "да".
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке
.
Invision Power Board © 2001-2025
Invision Power Services, Inc.