Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
16.03.2013, 16:45
|
|||
|---|---|---|---|
|
|||
Побочные эффекты в C. |
|||
|
#18+
Доброго времени суток. Читаю книгу Кернигана "Практика программирования". На скрине ниже показан пример, который я не понял: В моём понимании, в данном случае, индексация пройдёт дважды не зависимо от того, какое выражение будет вычислено первым. Однако автор пишет иначе. Кто-нибудь понял этот момент? С уважением, Андрей. _______________________ Британские "учёные" - фундаментальный подход к разной фигне... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.03.2013, 17:19
|
|||
|---|---|---|---|
Побочные эффекты в C. |
|||
|
#18+
Compositum, Индексация пройдет дважды. Переменная 'i' будет увеличена на 2. А вот как будут вычислены индексы в момент индексации -- это не определено. Недавно игрался с подобным кодом. Visual Studio инкрементировала переменную в обратном порядке -- в обратном по отношению к записи в выражении. И это в Debug. И с постфиксным инкрементом. А в Release Студия... просто вынесла все постфиксные инкременты за пределы вычисления выражения. И, я думаю, это правильно. Тут есть момент. Не надо пользоваться подобными приемами. Они ничего не дают, а привносят недопонятки в код -- мама не горюй. ЗЫ: gcc повел себя хуже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.03.2013, 17:24
|
|||
|---|---|---|---|
|
|||
Побочные эффекты в C. |
|||
|
#18+
Спасибо за ответ. Здесь мне только что, на конкретном примере, разъяснили почему ответ может оказаться неожиданным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.03.2013, 17:27
|
|||
|---|---|---|---|
Побочные эффекты в C. |
|||
|
#18+
CompositumДоброго времени суток. Читаю книгу Кернигана "Практика программирования". На скрине ниже показан пример, который я не понял: В моём понимании, в данном случае, индексация пройдёт дважды не зависимо от того, какое выражение будет вычислено первым. Однако автор пишет иначе. Кто-нибудь понял этот момент? Например, запись по str[i] дважды пройдет, а потом дважды увеличится переменная i. И "одна из позиций str может оказаться пропущенной". Даже две позиции будут пропущены. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.03.2013, 17:38
|
|||
|---|---|---|---|
Побочные эффекты в C. |
|||
|
#18+
CompositumСпасибо за ответ. Здесь мне только что, на конкретном примере, разъяснили почему ответ может оказаться неожиданным. По вашей ссылке xvr в своем псевдокоде ошибся. А вы в своих комментах не правильно понимаете понятие "выражение" в С++. В коде: Код: plaintext 1. Тут нет "нескольких" выражений. Это одно "выражение", так сказать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.03.2013, 17:49
|
|||
|---|---|---|---|
|
|||
Побочные эффекты в C. |
|||
|
#18+
petravCompositumСпасибо за ответ. Здесь мне только что, на конкретном примере, разъяснили почему ответ может оказаться неожиданным. По вашей ссылке xvr в своем псевдокоде ошибся. А вы в своих комментах не правильно понимаете понятие "выражение" в С++. В коде: Код: plaintext 1. Тут нет "нескольких" выражений. Это одно "выражение", так сказать. Понимаю я правильно, но написал действительно неверно. Главное, что меня поняли :), хотя впредь постараюсь писать правильней. petrav xvr в своем псевдокоде ошибся. В чём ошибка? Ведь по сути он написал то же самое, что и вы: petravНапример, запись по str[i] дважды пройдет, а потом дважды увеличится переменная i. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.03.2013, 17:55
|
|||
|---|---|---|---|
Побочные эффекты в C. |
|||
|
#18+
CompositumВ чём ошибка? Ведь по сути он написал то же самое, что и вы... Ошибка тут: Код: plaintext 1. 2. 3. 4. 5. Если i==0 в начале алгоритма, то в конце i==1. А должно быть 2. Просто... Не сочтите за обиду. =) Это мелочи. Но важные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.03.2013, 17:59
|
|||
|---|---|---|---|
|
|||
Побочные эффекты в C. |
|||
|
#18+
Да, теперь увидел... Должно было быть так: Код: plaintext 1. 2. 3. 4. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=57&mobile=1&tid=2020370]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
150ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 273ms |
| total: | 510ms |

| 0 / 0 |
