Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 1098
от 07.09.2008, 05:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 432, Экспертов: 40
В номере:Вопросов: 1, Ответов: 1

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 142872: Здравствуйте, что-то из этого я знаю, что-то нет. Хочу провериться и узнать. Помогите: for (i = 0; i < n; ++i) if (a[i] == x) break; Что делает этот код? Опишите его действие как можно полнее. Выпишите все операции, кото...

Вопрос № 142.872
Здравствуйте, что-то из этого я знаю, что-то нет. Хочу провериться и узнать. Помогите:
for (i = 0; i < n; ++i)
if (a[i] == x)
break;
Что делает этот код? Опишите его действие как можно полнее.
Выпишите все операции, которые выполняются в типичной итерации, в виде кусочков кода на языке C.
Что будет, если заменить ++i на i++ в этом коде?
Какая операция быстрее выполнится: j = i++ или j = ++i, если j и i целые?
А если j и i пользовательского типа?
Отправлен: 02.09.2008, 04:35
Вопрос задал: Капранов Павел Павлович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Лысков Игорь Витальевич
Здравствуйте, Капранов Павел Павлович!
В коде идет циклическая проверка на равенство значений элементов массива и величины Х.
При первом совпадении произойдет выход из цикла, при этом i останется равным индексу найденного элемента массива.
Если же совпадения не будет, то весь массив просмотрится до конца и i будет равно n.
Например, пусть имеем n=5, a[5] = {1, 2, 3 , 4, 5} и Х=3. Тогда будет выполнена следующая последовательность команд:
i=0; //начальная инициализация
goto compare
continue: //тело цикла
if a[i] == X then goto next;
++i; //изменения счетчика цикла
compare:
if i<n then goto continue; //проверка условия цикла
next:
//следующий оператор за циклом
На метку next попадем при i==2...

В этом коде без разницы i++ или ++i...
В чем суть этих операторов?
i++ - сначала используется значение переменной, а после инкрементируется.
++i - сначала инкрементируется, только потом используется.
О тсюда имеем, что отличия скажутся только если будем использовать
значение переменной и одновременно инкрементируем.
Например, Пусть i=6, тогда если запишем a[i++] = B или a[++i] = B, то что получим?
В первом случае: присвоим a[6]=B и после этого i станет равным 7
А во втором: сначала присвоим i=7, и после этого получим a[7]=B
По скорости j = i++ и j = ++i совершенно одинаковы при любом типе.
---------
Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: Специалист)
Ответ отправлен: 02.09.2008, 10:00


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале

∙ Версия системы: 5.2 RC 1 от 03.09.2008

Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное