реклама на сайте
подробности

 
 
> С, оператор for
ViKo
сообщение Nov 20 2014, 10:26
Сообщение #1


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Правильно я понимаю, что
Код
for (; *pat != ':'; pat++)

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

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

P.S. гы-гы, движок форума удаляет в коде пробелы после открытой скобки.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 6)
andrew_b
сообщение Nov 20 2014, 11:38
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



В первом случае инкремент указателя делается после проверки условия. Во втором случае указатель инкрементируется безусловно.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Nov 20 2014, 11:43
Сообщение #3


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(andrew_b @ Nov 20 2014, 14:38) *
В первом случае инкремент указателя делается после проверки условия.

Не просто после проверки, а после проверки, выполнения тела цикла (в данном случае он пустой), и вот тогда...
Go to the top of the page
 
+Quote Post
x893
сообщение Nov 21 2014, 02:28
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226



А ведь можно посмотреть код и не тратить время
Go to the top of the page
 
+Quote Post
alexeyv
сообщение Nov 21 2014, 04:24
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 298
Регистрация: 26-01-09
Из: Пермь
Пользователь №: 43 940



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

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


Второй случай не совсем верен, т.к. указатель может попасть за границы строки/массива, и может возникнуть трудноуловимая ошибка
Go to the top of the page
 
+Quote Post
ViKo
сообщение Nov 21 2014, 10:25
Сообщение #6


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



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

Оба опасны, как и всякий указатель biggrin.gif
Кто-нибудь, скажите твердое "да" на мой вопрос. rolleyes.gif
Go to the top of the page
 
+Quote Post
XVR
сообщение Nov 21 2014, 10:29
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



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

Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 12:17
Рейтинг@Mail.ru


Страница сгенерированна за 0.01376 секунд с 7
ELECTRONIX ©2004-2016