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

С, оператор for

Правильно я понимаю, что

for (; *pat != ':'; pat++)

не идентичен

for (; *pat++ != ':'; )

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

 

P.S. гы-гы, движок форума удаляет в коде пробелы после открытой скобки.

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


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

В первом случае инкремент указателя делается после проверки условия. Во втором случае указатель инкрементируется безусловно.

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


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

В первом случае инкремент указателя делается после проверки условия.

Не просто после проверки, а после проверки, выполнения тела цикла (в данном случае он пустой), и вот тогда...

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


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

я мало пользуюсь циклом фор, в основном вайлом

первое эквивалентно

while(*pat != ':') 
{
// работа с с тем же самым pat
........
pat++;
}

второе -

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

 

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

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


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

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

Оба опасны, как и всякий указатель :biggrin:

Кто-нибудь, скажите твердое "да" на мой вопрос. :rolleyes:

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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