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

start [/forum/topic.php?fid=57&fpage=82&tid=2020370]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
| others: | 13ms |
| total: | 153ms |

| 0 / 0 |
