|
|
|
помогите восстановить порядок выполнения операций
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. 4. 5. 6. 7. 8. Осветите пожауйста тему сабжа ответ 12. мои мысли(они дают неправильный ответ): сначала ++f итого f=6 потом f++ пока что f=6 затем сложение f=12 затем постинкремент вступает в силу f=13 Где я не прав? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2012, 02:53:24 |
|
||
|
помогите восстановить порядок выполнения операций
|
|||
|---|---|---|---|
|
#18+
redwhite90, Считывание значения "12" произойдет раньше, чем установка значения "13" в переменной f. Код: java 1. 2. 3. 1 2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2012, 03:05:13 |
|
||
|
помогите восстановить порядок выполнения операций
|
|||
|---|---|---|---|
|
#18+
dexsu, а что будет инкрементиться то? или инкремент вообще не произойдет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2012, 14:53:01 |
|
||
|
помогите восстановить порядок выполнения операций
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2012, 14:57:40 |
|
||
|
помогите восстановить порядок выполнения операций
|
|||
|---|---|---|---|
|
#18+
Подобны темы надо закрывать как дубли IMHO. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2012, 15:02:23 |
|
||
|
помогите восстановить порядок выполнения операций
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. объясните, пожалуйста, почему тут результат 5. я чего то не понимаю, куда девается инкремент ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2012, 17:10:13 |
|
||
|
помогите восстановить порядок выполнения операций
|
|||
|---|---|---|---|
|
#18+
redwhite90 Код: java 1. 2. 3. объясните, пожалуйста, почему тут результат 5. я чего то не понимаю, куда девается инкремент 1. присвоение выполняется после инкремента. 2. инкремент выполняется после считывания значения. Поэтому: считали значение, выполнили инкремент, присвоили значение, которое считали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2012, 17:26:17 |
|
||
|
помогите восстановить порядок выполнения операций
|
|||
|---|---|---|---|
|
#18+
Вообще поведение (пост/пред)инкрементов и присвоений - это language и compiller depends. Можно также посмотреть какой код генерит Java. Но я еще не настолько крут чтобы прокомментировать все операции. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2012, 17:31:11 |
|
||
|
помогите восстановить порядок выполнения операций
|
|||
|---|---|---|---|
|
#18+
maytonВообще поведение (пост/пред)инкрементов и присвоений - это language и compiller depends. Можно также посмотреть какой код генерит Java. Но я еще не настолько крут чтобы прокомментировать все операции. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2012, 17:53:33 |
|
||
|
помогите восстановить порядок выполнения операций
|
|||
|---|---|---|---|
|
#18+
redwhite90, тебе всё тут понятно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2012, 17:54:17 |
|
||
|
помогите восстановить порядок выполнения операций
|
|||
|---|---|---|---|
|
#18+
Спасибо вам. Если честно, из более абстрактного объяснения понятнее) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2012, 00:26:51 |
|
||
|
помогите восстановить порядок выполнения операций
|
|||
|---|---|---|---|
|
#18+
redwhite90, То есть постИнкремент произойдет, но это уже мы не заметим ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2012, 00:27:58 |
|
||
|
помогите восстановить порядок выполнения операций
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, хотя я поторопился .... не совсем понял Код: java 1. считали и проинкрементировали мы разные значения получается. и то, что проинкрементировали осталось гулять в памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2012, 00:33:02 |
|
||
|
помогите восстановить порядок выполнения операций
|
|||
|---|---|---|---|
|
#18+
и всё таки не ясно Код: java 1. 2. программа одиннадцать выдает.я расчитывал на 10 или получается только последний постинкремент не произойдет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2012, 00:35:36 |
|
||
|
помогите восстановить порядок выполнения операций
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. а вот так тоже 12, хотя сначала же произойдет постинкремент, а потом пре, если я не ошибаюсь с приоритетами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2012, 00:38:03 |
|
||
|
помогите восстановить порядок выполнения операций
|
|||
|---|---|---|---|
|
#18+
то есть 12 она выдает, а я расчитывал на 11 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2012, 00:41:28 |
|
||
|
помогите восстановить порядок выполнения операций
|
|||
|---|---|---|---|
|
#18+
redwhite90, ну конечно-же ты не поймешь. Как можно решать квадратные уравнения не зная операций с дробной степенью? Читай раз как работает Lvalue и RValue. http://www.rsdn.ru/article/cpp/lvalue.xml Почитай еще два http://www.ibm.com/developerworks/ru/library/j-noaccent/ особенно возле фрагмента Пост-инкремент вместо пред-инкрементаНи при каких условиях вы не должны писать код, поведение которого зависит от того, использует вы префиксное или постфиксное инкрементирование переменной (кстати, то же самое справедливо и для С). Причина проста: такой код очень сложно понимать, поэтому он ведет к ошибкам. Если вы обнаружите, что в вашем коде важна эта разница, то следует разделить его на несколько строк таким образом, чтобы можно было использовать любой из операторов инкремента. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2012, 01:01:58 |
|
||
|
помогите восстановить порядок выполнения операций
|
|||
|---|---|---|---|
|
#18+
Пост-инкремент вместо пред-инкрементаНи при каких условиях вы не должны писать код, поведение которого зависит от того, использует вы префиксное или постфиксное инкрементирование переменной (кстати, то же самое справедливо и для С). Причина проста: такой код очень сложно понимать, поэтому он ведет к ошибкам. Если вы обнаружите, что в вашем коде важна эта разница, то следует разделить его на несколько строк таким образом, чтобы можно было использовать любой из операторов инкремента. это я понимаю...я так, с теоретической точки зрения интересуюсь... в C++ вроде бы это все решается компилятором и такое выражение является неопределенным ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2012, 01:07:46 |
|
||
|
помогите восстановить порядок выполнения операций
|
|||
|---|---|---|---|
|
#18+
redwhite90, про rvalue lvalue я ничего нового не вынес для себя. и всё-таки непонятно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2012, 01:40:42 |
|
||
|
помогите восстановить порядок выполнения операций
|
|||
|---|---|---|---|
|
#18+
redwhite90, не ну, получается f++ это rvalue и получается, что это только значение.....блин, я запутался только ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2012, 01:57:40 |
|
||
|
помогите восстановить порядок выполнения операций
|
|||
|---|---|---|---|
|
#18+
исходя из тестирования сделал для себя вывод, что последний постинкремент не выполнятся, если он выполняется для переменной в левой и правой части выражения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2012, 02:15:25 |
|
||
|
помогите восстановить порядок выполнения операций
|
|||
|---|---|---|---|
|
#18+
если эта переменная присутствует и в левой и в правой части выражения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2012, 02:22:23 |
|
||
|
помогите восстановить порядок выполнения операций
|
|||
|---|---|---|---|
|
#18+
Ты знаешь, я всегда удивлялся способности разработчиков находить грабли и долго и с наслаждением ходить по ним. Что тебе это даёт? Какой-то садист специально нашёл парадокс в С++ и с наслаждением его распространил. Вам-же разработчикам больше нечего делать как ковырять это выражение подобно выковыриванию и рассматриванию грязи из ушей или козявок из носа. Неужели нет других интересных тем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2012, 02:49:09 |
|
||
|
помогите восстановить порядок выполнения операций
|
|||
|---|---|---|---|
|
#18+
redwhite90исходя из тестирования сделал для себя вывод, что последний постинкремент не выполнятся, если он выполняется для переменной в левой и правой части выражения. Он всегда выполняется. Тебе даже привели ассемблированный код. Читай между строк. Если абстрактно, можно попробовать провести аналогию: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. При постинкременте то же самое: переменная "заполняется" значением только после того, как мы ее "вычитываем" - совершаем очередную итерацию в ее жизненном цикле. Но при постинкременте переменная сначала считывается (с предыдущим значением), а только затем это значение инкременируется. А что касается префиксного и постфиксного инкремента, то разница между ними не только в очередности инкрементирования, но и в самом механизме инкремента: постинкремент создает копию себя, возвращает старое значение, инкременирует новое значение. А преинкремент инкременирует себя и возвращает себя. Подглядел такую умную мысль: "при ++f объект возвращается по ссылке, а при f++ по значению". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2012, 02:50:42 |
|
||
|
помогите восстановить порядок выполнения операций
|
|||
|---|---|---|---|
|
#18+
полдня думал об этом и наконец то понял)))) при постинкременте: Ведь сначала происходит возврат значения в выражение(предыдущее значение f), потом происходит инкремент и f таки увеличивается и ее значение меняется, но потом происходит присваивание f значение выражения. Все, спасибо) Конечно Blazkowicz то же самое примерно писал, но я как то не осозновал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2012, 18:43:33 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38086867&tid=2130318]: |
0ms |
get settings: |
15ms |
get forum list: |
31ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
68ms |
get topic data: |
22ms |
get forum data: |
5ms |
get page messages: |
117ms |
get tp. blocked users: |
3ms |
| others: | 307ms |
| total: | 582ms |

| 0 / 0 |
