Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Что понимается под "побочными эффектами" выражений?
|
|||
|---|---|---|---|
|
#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, 10:58 |
|
||
|
Что понимается под "побочными эффектами" выражений?
|
|||
|---|---|---|---|
|
#18+
Compositum, чаще всего выражение - это присваивание. соответственно, побочный эффект - все изменения переменных помимо предполагаемых в результе присваивания. это естественно самый простейший случай, есть конечно и другие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2013, 11:41 |
|
||
|
Что понимается под "побочными эффектами" выражений?
|
|||
|---|---|---|---|
|
#18+
Compositum, именно здесь имеется в виду то, что это не должно быть выражение, вообще что то меняющее. хотя я вот лично не понимаю почему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2013, 11:55 |
|
||
|
Что понимается под "побочными эффектами" выражений?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. Побочный эффект - изменение i. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2013, 11:57 |
|
||
|
Что понимается под "побочными эффектами" выражений?
|
|||
|---|---|---|---|
|
#18+
pirovindos Код: plaintext 1. Побочный эффект - изменение i. И каким боком этот побочный эффект можно прикрутить к сигнатурам: Код: plaintext 1. 2. 3. В качестве параметра передаётся ссылка на поток. Какие побочные эффекты возможны при передачи такой ссылки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2013, 12:07 |
|
||
|
Что понимается под "побочными эффектами" выражений?
|
|||
|---|---|---|---|
|
#18+
Compositum, в том то и дело, что почти никаким. можно массив файлов и указатель в нем или индекс. и типа в цикле из каждого файла читаем по символу и как-то обрабатывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2013, 12:13 |
|
||
|
Что понимается под "побочными эффектами" выражений?
|
|||
|---|---|---|---|
|
#18+
MasterZiv, и главное - почему это нельзя вдруг вставать в макрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2013, 12:15 |
|
||
|
Что понимается под "побочными эффектами" выражений?
|
|||
|---|---|---|---|
|
#18+
Честно говоря, в данном случае, мне был бы более понятен конкретный пример кода, демонстрирующий ситуацию с "побочным эффектом", при котором удаётся использовать функцию fgetc, но не удаётся getc. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2013, 12:21 |
|
||
|
Что понимается под "побочными эффектами" выражений?
|
|||
|---|---|---|---|
|
#18+
MasterZivпочему это нельзя вдруг вставать в макрос.В макросе входной "аргумент" может быть использован более одного раза. Тогда, если это выражение-аргумент что-то изменяет, то оно сработает не очевидным образом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2013, 12:30 |
|
||
|
Что понимается под "побочными эффектами" выражений?
|
|||
|---|---|---|---|
|
#18+
miksoftВ макросе входной "аргумент" может быть использован более одного раза. Тогда, если это выражение-аргумент что-то изменяет, то оно сработает не очевидным образом В данной теме речь идёт о конкретных функциях с конкретными сигнатурами . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2013, 13:34 |
|
||
|
Что понимается под "побочными эффектами" выражений?
|
|||
|---|---|---|---|
|
#18+
miksoftMasterZivпочему это нельзя вдруг вставать в макрос.В макросе входной "аргумент" может быть использован более одного раза. Тогда, если это выражение-аргумент что-то изменяет, то оно сработает не очевидным образом. Ну да, об этом я не подумал. Но это был бы очень хреновый макрос. И уж точно getc таким бы не был. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2013, 13:35 |
|
||
|
Что понимается под "побочными эффектами" выражений?
|
|||
|---|---|---|---|
|
#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:42 |
|
||
|
Что понимается под "побочными эффектами" выражений?
|
|||
|---|---|---|---|
|
#18+
MasterZiv Код: plaintext 1. getch в моём вопросе не фигурировал. :) Задал вопрос на stackoverflow и получил понятные мне ответы с примерами. Если кому интересно, то можно глянуть здесь . Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2013, 13:54 |
|
||
|
Что понимается под "побочными эффектами" выражений?
|
|||
|---|---|---|---|
|
#18+
CompositumMasterZiv Код: plaintext 1. getch в моём вопросе не фигурировал. :) Задал вопрос на stackoverflow и получил понятные мне ответы с примерами. Если кому интересно, то можно глянуть здесь . Спасибо. Описался. Должно быть getc(); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2013, 15:13 |
|
||
|
Что понимается под "побочными эффектами" выражений?
|
|||
|---|---|---|---|
|
#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:11 |
|
||
|
Что понимается под "побочными эффектами" выражений?
|
|||
|---|---|---|---|
|
#18+
miksoftо чем я и говорил... Однако в комментариях этому человеку пишут: Jim BalterYou have no idea what you're talking about. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2013, 17:56 |
|
||
|
Что понимается под "побочными эффектами" выражений?
|
|||
|---|---|---|---|
|
#18+
Нашел в C++Builder 6 код getc() Код: plaintext 1. 2. 3. Если в качестве "аргумента" __f "передать", к примеру, files[counter++], то насколько увеличится в итоге counter? Будь getc() обычной функцией, то counter увеличился бы ровно на единицу. А в случае с макросом - явно больше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2013, 18:08 |
|
||
|
Что понимается под "побочными эффектами" выражений?
|
|||
|---|---|---|---|
|
#18+
Compositum, Короче. Проблема обсуждаемая не стоит столь пристального внимания. Просто надо знать, что getc может быть макросом (а может и не быть). И при её вызове надо думать, что делаешь. Если думать не хочешь, надо использовать fgetc (который, кстати, не смотря на то, что он функция, можэт тоже замечательно встроится (inline) и таким образом быть и быстрым, и лишённым таких проблем). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2013, 18:10 |
|
||
|
Что понимается под "побочными эффектами" выражений?
|
|||
|---|---|---|---|
|
#18+
Compositummiksoftо чем я и говорил... Однако в комментариях этому человеку пишут: Jim BalterYou have no idea what you're talking about. Это возражение на утверждение что только в плохо написаной стандартной либе в макросе аргумент будет дважды вычисляться. В качестве опровержения приводится в пример либа от оригинального компилятора С. Как бы намекая что уж она то хорошо написана. А на самом деле исходное утверждение абсолютно корректно, потому что только в плохо написаной стандартной либе будет использован макрос, когда любой самый дохлый современный компилятор умеет инлайн функции ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2013, 22:02 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=68&tid=2019811]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
| others: | 12ms |
| total: | 164ms |

| 0 / 0 |
