Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: С, оператор for
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
ViKo
Правильно я понимаю, что
Код
for (; *pat != ':'; pat++)

не идентичен
Код
for (; *pat++ != ':'; )

Потому что в первом случае указатель остановится на символе ':', а во втором - за ним.

P.S. гы-гы, движок форума удаляет в коде пробелы после открытой скобки.
andrew_b
В первом случае инкремент указателя делается после проверки условия. Во втором случае указатель инкрементируется безусловно.
ViKo
Цитата(andrew_b @ Nov 20 2014, 14:38) *
В первом случае инкремент указателя делается после проверки условия.

Не просто после проверки, а после проверки, выполнения тела цикла (в данном случае он пустой), и вот тогда...
x893
А ведь можно посмотреть код и не тратить время
alexeyv
я мало пользуюсь циклом фор, в основном вайлом
первое эквивалентно
Код
while(*pat != ':')
{
// работа с с тем же самым pat
........
pat++;
}

второе -
Код
while(*pat++ != ':')
{
// работа с инкрементированным  pat
........
}


Второй случай не совсем верен, т.к. указатель может попасть за границы строки/массива, и может возникнуть трудноуловимая ошибка
ViKo
Цитата(alexeyv @ Nov 21 2014, 07:24) *
Второй случай не совсем верен, т.к. указатель может попасть за границы строки/массива, и может возникнуть трудноуловимая ошибка

Оба опасны, как и всякий указатель biggrin.gif
Кто-нибудь, скажите твердое "да" на мой вопрос. rolleyes.gif
XVR
Цитата(ViKo @ Nov 21 2014, 13:25) *
Кто-нибудь, скажите твердое "да" на мой вопрос. rolleyes.gif
Твердое "да".

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.