|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
07.07.2010, 09:58 | #1 |
Форумчанин
Регистрация: 05.06.2007
Сообщений: 529
|
двойной вывод элементов массива
Здравствуйте. Имеется массив, в котором данные идут друг за другом:
Код:
Код:
Но если я буду выводить по 2 элемента за раз: Код:
2 - 1 4 - 3 6 - 5 8 - 7 10 - 9 я догадываюсь, что проблема именно в инкрименте "n++", который стоит в качестве элемента массива, и причем дважды, но тем неменее, интересно понять, почему именно так? Ведь кажется все правильно, вывод, сдвиг вперед, вывод, сдвиг вперед. |
07.07.2010, 10:47 | #3 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Чтобы избежать недоразумений, нужно избегать нескольких инкрементов/декрементов одной переменной в одной строке
Код:
|
07.07.2010, 11:31 | #4 |
Форумчанин
Регистрация: 05.06.2007
Сообщений: 529
|
Спасибо. Да, я думал о таком способе, но хотелось упростить код как можно лучше, без лишних обращений к переменным, что бы функция работала быстрее...
Ладно, и еще вопрос по теме. Скажите, а чтение элементов массива не через номер элемента: Код:
Код:
Последний раз редактировалось Артэс; 07.07.2010 в 11:34. |
07.07.2010, 11:40 | #5 |
Форумчанин
Регистрация: 26.04.2010
Сообщений: 328
|
В теории дя, особенно в многомерных массивах, НО эта быстрота столь незначительна, что на неё можно плюнуть, если в массиве три элемента, а функция вызывается четыре раза за время выполнения программы
|
07.07.2010, 11:42 | #6 | |
Новичок
Джуниор
Регистрация: 04.07.2010
Сообщений: 38
|
Цитата:
Код:
Последний раз редактировалось Loji; 07.07.2010 в 11:45. |
|
07.07.2010, 11:45 | #7 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
интерестно а почему быстрее?
по сути же одно и тоже, что через указатель, что через индекс. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
07.07.2010, 11:48 | #8 | |
Форумчанин
Регистрация: 02.02.2010
Сообщений: 599
|
Цитата:
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
|
|
07.07.2010, 12:00 | #9 |
Форумчанин
Регистрация: 26.04.2010
Сообщений: 328
|
array[ i ] разворачивается в *( (void*)array + i * sizeof( *array ) ), если всё правильно помню
*array разворачивается в *array Но опять же, выигрыш есть в многомерных массивах, и да, если он не нужен( а он очень мал ), то нужно пользоваться индексом. Последний раз редактировалось ozo; 07.07.2010 в 12:06. |
07.07.2010, 12:02 | #10 |
Форумчанин
Регистрация: 26.04.2010
Сообщений: 328
|
А чему равно i+++++i ? Опять же - один фиг, стандартом не определен порядок вычисления этого всего, а следовательно в разных компиляторах будет разный ответ.
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вывод элементов массива.Изменение элементов массива. | Vesnushka18 | Помощь студентам | 6 | 09.06.2011 13:05 |
вывод элементов из массива | kirosin | PHP | 3 | 15.05.2010 13:00 |
вывод элементов массива. PASCAL. | lammy | Помощь студентам | 4 | 01.04.2010 21:45 |
Вывод значения элементов массива | valdemar593 | Общие вопросы C/C++ | 7 | 22.12.2009 21:37 |
Вывод ненулевых элементов массива | Ci_novice | Общие вопросы C/C++ | 2 | 28.12.2007 14:59 |