|
|
|
++i + ++i
|
|||
|---|---|---|---|
|
#18+
Имеется код: Код: plaintext 1. 2. Чему будет равно i в результате? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 10:59 |
|
||
|
++i + ++i
|
|||
|---|---|---|---|
|
#18+
TopSpaceВ с++ 14 Но почему 14??????? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 11:07 |
|
||
|
++i + ++i
|
|||
|---|---|---|---|
|
#18+
Александр Гoлдун TopSpaceВ с++ 14 Но почему 14??????? Сначала прединкременты, потом сложение. Эта тема подробно разбиралась, где-то пол года назад. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 11:10 |
|
||
|
++i + ++i
|
|||
|---|---|---|---|
|
#18+
Ну хорошо, чуть усложним вариант: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 11:11 |
|
||
|
++i + ++i
|
|||
|---|---|---|---|
|
#18+
Александр ГoлдунНу хорошо, чуть усложним вариант: Код: plaintext 1. 2. 3. С какой целью вы интересуетесь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 11:25 |
|
||
|
++i + ++i
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 14 из-за того, что после инкрементов правый операнд сложения - область памяти обозначенная как переменная i. Которая претерпела 2 инкремента. Т.е. не создается временный объект под результат (хотя было бы логичней, в .net создается) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 11:26 |
|
||
|
++i + ++i
|
|||
|---|---|---|---|
|
#18+
Akh Александр ГoлдунНу хорошо, чуть усложним вариант: Код: plaintext 1. 2. 3. С какой целью вы интересуетесь? Да в общем-то ни с какой. Давно уже не брал в руки С++, хотя когда-то весьма активно его использовал. И тут спросили по ICQ. С ходу ответил одно, скомпилял, проверил - получил другое. Смутило. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 11:28 |
|
||
|
++i + ++i
|
|||
|---|---|---|---|
|
#18+
TopSpace Код: plaintext 1. 2. 3. 14 из-за того, что после инкрементов правый операнд сложения - область памяти обозначенная как переменная i. Которая претерпела 2 инкремента. Т.е. не создается временный объект под результат (хотя было бы логичней, в .net создается) Проверил == 11. У меня логика не основывается на областях памяти: Скобки самые приоритетные, поэтому инкременты разделились во времени. Получилось 6+5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 11:30 |
|
||
|
++i + ++i
|
|||
|---|---|---|---|
|
#18+
TopSpace Код: plaintext 1. 2. 3. 10. При этом a=5, b=5 получилось. C++ Builder 6 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 11:30 |
|
||
|
++i + ++i
|
|||
|---|---|---|---|
|
#18+
Александр Гoлдун Akh Александр ГoлдунНу хорошо, чуть усложним вариант: Код: plaintext 1. 2. 3. С какой целью вы интересуетесь? Да в общем-то ни с какой. Давно уже не брал в руки С++, хотя когда-то весьма активно его использовал. И тут спросили по ICQ. С ходу ответил одно, скомпилял, проверил - получил другое. Смутило. Если интересна тема, то можете поискать эту ветку. Даже разбирали asm для выяснения обстаятельств. В чем-то даже разобрались. Но эта тонкая материя, нет необходимости заморачиваться по этому поводу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 11:33 |
|
||
|
++i + ++i
|
|||
|---|---|---|---|
|
#18+
Akh Скобки самые приоритетные, поэтому инкременты разделились во времени. Получилось 6+5. так а почему 5? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 11:39 |
|
||
|
++i + ++i
|
|||
|---|---|---|---|
|
#18+
TopSpace Akh Скобки самые приоритетные, поэтому инкременты разделились во времени. Получилось 6+5. так а почему 5? Потом декремент вернул i значение 5-ти: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 11:41 |
|
||
|
++i + ++i
|
|||
|---|---|---|---|
|
#18+
Akh TopSpace Код: plaintext 1. 2. 3. 14 из-за того, что после инкрементов правый операнд сложения - область памяти обозначенная как переменная i. Которая претерпела 2 инкремента. Т.е. не создается временный объект под результат (хотя было бы логичней, в .net создается) Проверил == 11. У меня логика не основывается на областях памяти: Скобки самые приоритетные, поэтому инкременты разделились во времени. Получилось 6+5. В каком компиляторе? C++Builder 6 выдал i=10, a=5, b=5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 11:43 |
|
||
|
++i + ++i
|
|||
|---|---|---|---|
|
#18+
Akh TopSpace Akh Скобки самые приоритетные, поэтому инкременты разделились во времени. Получилось 6+5. так а почему 5? Потом декремент вернул i значение 5-ти: Код: plaintext 1. 2. 3. Разве приоритет не справа на лево (например сцепки операторов <<)?? Тогда Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 11:47 |
|
||
|
++i + ++i
|
|||
|---|---|---|---|
|
#18+
TopSpaceВ с++ 14)) В c# 13 а почему в С# 13 ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 11:48 |
|
||
|
++i + ++i
|
|||
|---|---|---|---|
|
#18+
Александр Гoлдун Akh TopSpace Код: plaintext 1. 2. 3. 14 из-за того, что после инкрементов правый операнд сложения - область памяти обозначенная как переменная i. Которая претерпела 2 инкремента. Т.е. не создается временный объект под результат (хотя было бы логичней, в .net создается) Проверил == 11. У меня логика не основывается на областях памяти: Скобки самые приоритетные, поэтому инкременты разделились во времени. Получилось 6+5. В каком компиляторе? C++Builder 6 выдал i=10, a=5, b=5 gcc ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 11:49 |
|
||
|
++i + ++i
|
|||
|---|---|---|---|
|
#18+
батрачище TopSpaceВ с++ 14)) В c# 13 а почему в С# 13 ??? Потому что при вычислении ++i создается новый объект, который при втором ++i не трогается, и участвует в сложении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 11:53 |
|
||
|
++i + ++i
|
|||
|---|---|---|---|
|
#18+
Akh Если интересна тема, то можете поискать эту ветку. Даже разбирали asm для выяснения обстаятельств. В чем-то даже разобрались. Тема любопытна. Я догадывался, что это, возможно, обсуждалось, и может не один раз. Но найти не удалось. Ключевые слова не подскажете? Akh Но эта тонкая материя, нет необходимости заморачиваться по этому поводу. В принципе да. За такой код в продакшн надо гнать в шею. Сомневаешься - упрости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 11:53 |
|
||
|
++i + ++i
|
|||
|---|---|---|---|
|
#18+
TopSpace батрачище TopSpaceВ с++ 14)) В c# 13 а почему в С# 13 ??? Потому что при вычислении ++i создается новый объект, который при втором ++i не трогается, и участвует в сложении. какой гемор!.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 11:54 |
|
||
|
++i + ++i
|
|||
|---|---|---|---|
|
#18+
TopSpace[quot Akh] Разве приоритет не справа на лево (например сцепки операторов <<)?? Тогда Код: plaintext 1. 2. 3. Может и справа налево. Тогда логика какая-то другая. Но как мы уже убедились, на разных компиляторах, результат получается разный. Значит стандартом не оговорено вычесление подобных выражений (с множественным использованием переменных с пре и пост инекрементами). Таким образом, исследование подобного вопроса, может представлять интерес чисто научный для конкретного компилятора. Можно будет даже выдвинуть теорию, как в таких случаях ведет себя компилятор. Для текущей версии, для текущей оптимизации. Так что, к изучению с/с++, это исследование не имеет ни какого отношения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 11:55 |
|
||
|
++i + ++i
|
|||
|---|---|---|---|
|
#18+
a Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 11:56 |
|
||
|
++i + ++i
|
|||
|---|---|---|---|
|
#18+
Александр ГoлдунТема любопытна. Я догадывался, что это, возможно, обсуждалось, и может не один раз. Но найти не удалось. Ключевые слова не подскажете? ++i или i++? Префиксные операции и стандарт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 12:03 |
|
||
|
++i + ++i
|
|||
|---|---|---|---|
|
#18+
батрачищеa Код: plaintext 1. Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2007, 12:27 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=294&tid=2028842]: |
0ms |
get settings: |
11ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
79ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
78ms |
get tp. blocked users: |
2ms |
| others: | 298ms |
| total: | 513ms |

| 0 / 0 |
