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

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
17.12.2013, 10:58
|
|||
|---|---|---|---|
|
|||
Что понимается под "побочными эффектами" выражений? |
|||
|
#18+
Доброго времени суток. Читаю это . "Advanced Programming in the UNIX Environment, 3rd Edition", стр. 151The difference between getc and fgetc is that getc can be implemented as a macro, whereas fgetc cannot be implemented as a macro. This means three things: - The argument to getc should not be an expression with side effects. - Since fgetc is guaranteed to be a function, we can take its address. This allows us to pass the address of fgetc as an argument to another function. - Calls to fgetc probably take longer than calls to getc, as it usually takes more time to call a function.Не понял фразу "expression with side effects" (перевожу как "выражения с побочными эффектами). Что это за "побочные эффекты"? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.12.2013, 11:41
|
|||
|---|---|---|---|
Что понимается под "побочными эффектами" выражений? |
|||
|
#18+
Compositum, чаще всего выражение - это присваивание. соответственно, побочный эффект - все изменения переменных помимо предполагаемых в результе присваивания. это естественно самый простейший случай, есть конечно и другие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.12.2013, 11:55
|
|||
|---|---|---|---|
Что понимается под "побочными эффектами" выражений? |
|||
|
#18+
Compositum, именно здесь имеется в виду то, что это не должно быть выражение, вообще что то меняющее. хотя я вот лично не понимаю почему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.12.2013, 11:57
|
|||
|---|---|---|---|
|
|||
Что понимается под "побочными эффектами" выражений? |
|||
|
#18+
Код: plaintext 1. Побочный эффект - изменение i. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.12.2013, 12:07
|
|||
|---|---|---|---|
|
|||
Что понимается под "побочными эффектами" выражений? |
|||
|
#18+
pirovindos Код: plaintext 1. Побочный эффект - изменение i. И каким боком этот побочный эффект можно прикрутить к сигнатурам: Код: plaintext 1. 2. 3. В качестве параметра передаётся ссылка на поток. Какие побочные эффекты возможны при передачи такой ссылки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.12.2013, 12:13
|
|||
|---|---|---|---|
Что понимается под "побочными эффектами" выражений? |
|||
|
#18+
Compositum, в том то и дело, что почти никаким. можно массив файлов и указатель в нем или индекс. и типа в цикле из каждого файла читаем по символу и как-то обрабатывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.12.2013, 12:15
|
|||
|---|---|---|---|
Что понимается под "побочными эффектами" выражений? |
|||
|
#18+
MasterZiv, и главное - почему это нельзя вдруг вставать в макрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.12.2013, 12:21
|
|||
|---|---|---|---|
|
|||
Что понимается под "побочными эффектами" выражений? |
|||
|
#18+
Честно говоря, в данном случае, мне был бы более понятен конкретный пример кода, демонстрирующий ситуацию с "побочным эффектом", при котором удаётся использовать функцию fgetc, но не удаётся getc. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.12.2013, 12:30
|
|||
|---|---|---|---|
Что понимается под "побочными эффектами" выражений? |
|||
|
#18+
MasterZivпочему это нельзя вдруг вставать в макрос.В макросе входной "аргумент" может быть использован более одного раза. Тогда, если это выражение-аргумент что-то изменяет, то оно сработает не очевидным образом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.12.2013, 13:34
|
|||
|---|---|---|---|
|
|||
Что понимается под "побочными эффектами" выражений? |
|||
|
#18+
miksoftВ макросе входной "аргумент" может быть использован более одного раза. Тогда, если это выражение-аргумент что-то изменяет, то оно сработает не очевидным образом В данной теме речь идёт о конкретных функциях с конкретными сигнатурами . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.12.2013, 13:35
|
|||
|---|---|---|---|
Что понимается под "побочными эффектами" выражений? |
|||
|
#18+
miksoftMasterZivпочему это нельзя вдруг вставать в макрос.В макросе входной "аргумент" может быть использован более одного раза. Тогда, если это выражение-аргумент что-то изменяет, то оно сработает не очевидным образом. Ну да, об этом я не подумал. Но это был бы очень хреновый макрос. И уж точно getc таким бы не был. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.12.2013, 13:42
|
|||
|---|---|---|---|
Что понимается под "побочными эффектами" выражений? |
|||
|
#18+
CompositumЧестно говоря, в данном случае, мне был бы более понятен конкретный пример кода, демонстрирующий ситуацию с "побочным эффектом", при котором удаётся использовать функцию fgetc, но не удаётся getc. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.12.2013, 13:54
|
|||
|---|---|---|---|
|
|||
Что понимается под "побочными эффектами" выражений? |
|||
|
#18+
MasterZiv Код: plaintext 1. getch в моём вопросе не фигурировал. :) Задал вопрос на stackoverflow и получил понятные мне ответы с примерами. Если кому интересно, то можно глянуть здесь . Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.12.2013, 15:13
|
|||
|---|---|---|---|
Что понимается под "побочными эффектами" выражений? |
|||
|
#18+
CompositumMasterZiv Код: plaintext 1. getch в моём вопросе не фигурировал. :) Задал вопрос на stackoverflow и получил понятные мне ответы с примерами. Если кому интересно, то можно глянуть здесь . Спасибо. Описался. Должно быть getc(); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.12.2013, 17:11
|
|||
|---|---|---|---|
Что понимается под "побочными эффектами" выражений? |
|||
|
#18+
CompositummiksoftВ макросе входной "аргумент" может быть использован более одного раза. Тогда, если это выражение-аргумент что-то изменяет, то оно сработает не очевидным образом В данной теме речь идёт о конкретных функциях с конкретными сигнатурами . http://stackoverflow.com/questions/20629059/how-can-an-expression-with-side-effects-be-passed-to-getc?noredirect=1#comment30877382_20629059 the expression files[counter++] could be evaluated more than once, leading to unexpected behavior.о чем я и говорил... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.12.2013, 17:56
|
|||
|---|---|---|---|
|
|||
Что понимается под "побочными эффектами" выражений? |
|||
|
#18+
miksoftо чем я и говорил... Однако в комментариях этому человеку пишут: Jim BalterYou have no idea what you're talking about. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.12.2013, 18:08
|
|||
|---|---|---|---|
Что понимается под "побочными эффектами" выражений? |
|||
|
#18+
Нашел в C++Builder 6 код getc() Код: plaintext 1. 2. 3. Если в качестве "аргумента" __f "передать", к примеру, files[counter++], то насколько увеличится в итоге counter? Будь getc() обычной функцией, то counter увеличился бы ровно на единицу. А в случае с макросом - явно больше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.12.2013, 18:10
|
|||
|---|---|---|---|
Что понимается под "побочными эффектами" выражений? |
|||
|
#18+
Compositum, Короче. Проблема обсуждаемая не стоит столь пристального внимания. Просто надо знать, что getc может быть макросом (а может и не быть). И при её вызове надо думать, что делаешь. Если думать не хочешь, надо использовать fgetc (который, кстати, не смотря на то, что он функция, можэт тоже замечательно встроится (inline) и таким образом быть и быстрым, и лишённым таких проблем). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.12.2013, 22:02
|
|||
|---|---|---|---|
|
|||
Что понимается под "побочными эффектами" выражений? |
|||
|
#18+
Compositummiksoftо чем я и говорил... Однако в комментариях этому человеку пишут: Jim BalterYou have no idea what you're talking about. Это возражение на утверждение что только в плохо написаной стандартной либе в макросе аргумент будет дважды вычисляться. В качестве опровержения приводится в пример либа от оригинального компилятора С. Как бы намекая что уж она то хорошо написана. А на самом деле исходное утверждение абсолютно корректно, потому что только в плохо написаной стандартной либе будет использован макрос, когда любой самый дохлый современный компилятор умеет инлайн функции ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=57&mobile=1&tid=2019811]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
68ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 171ms |

| 0 / 0 |
