|
|
|
Префиксные операции и стандарт
|
|||
|---|---|---|---|
|
#18+
эээ... ссылку надо возвращать, чтобы корректно отработал inc(inc(a)). inline int &inc(int &i) { i++; return i; } и уж совсем к вящей славе страуструпа можно объявить volatile int a; ------------------ - А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2006, 16:59 |
|
||
|
Префиксные операции и стандарт
|
|||
|---|---|---|---|
|
#18+
maXmoэээ... ссылку надо возвращать, чтобы корректно отработал inc(inc(a)). inline int &inc(int &i) { i++; return i; } и уж совсем к вящей славе страуструпа можно объявить volatile int a; ------------------ - А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm => 6 =) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2006, 17:14 |
|
||
|
Префиксные операции и стандарт
|
|||
|---|---|---|---|
|
#18+
всё с ним ясно :-| ------------------ - А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2006, 19:57 |
|
||
|
Префиксные операции и стандарт
|
|||
|---|---|---|---|
|
#18+
v6y v> Если я правильно понял Карабаса Барабаса, то его v> интересует как, по мнению форумчан, должны вычисляться v> подобные выраженияПоразмыслив, пришел к выводу, что это как раз тот случай, когда прав компилятор, как бы он ни вычислял те выражения. Так что надо просто знать, как конкретно ваш компилятор правильно делает и учитывать особенности правильности именно вашего компилятора :) PS: шутки типа "в военное время значение синуса может достигать 4" перестают быть шутками - одна и та же программа, скомпиленная на разных компиляторах, выдаст совершенно разные значения при вычислении простейшего выражения. А что делать, написано "мины" - не ходи ! Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2006, 06:56 |
|
||
|
Префиксные операции и стандарт
|
|||
|---|---|---|---|
|
#18+
А зачем тебе такое выражение понадобилось? Это же изврат. ------------------ - А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2006, 16:22 |
|
||
|
Префиксные операции и стандарт
|
|||
|---|---|---|---|
|
#18+
v6yЕсли я правильно понял Карабаса Барабаса, то его интересует как, по мнению форумчан, должны вычисляться подобные выражения. И если я понял его правильно, то тогда я не понял чего народ тут усиленно толкует о том что дважды два четыре (результат по стандарту не определен бла-бла-бла) Я тут по-медитировал, и тоже пришел к мнению, что Код: plaintext 1. 2. В что-то типа польской записи: (PREINCa)(PREINCa)+ PREINCa=2 PREINCa=3 2+3=5 И код генерировать соответсвующий. Это было бы логично для паралельных вычислений/языков прграммирования и то в случае специального указания. По моему мнению данная конструкция не подлежит распаралеливанию. Это пример классического последовательного вычисления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2007, 14:00 |
|
||
|
Префиксные операции и стандарт
|
|||
|---|---|---|---|
|
#18+
Стандарт стандартом, но на мой взгляд ВПОЛНЕ логично вычислить операнды перед выполнением операции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2007, 09:01 |
|
||
|
Префиксные операции и стандарт
|
|||
|---|---|---|---|
|
#18+
т.е. перед сложением дважды выполнить инкремент и не парить мозк с сохранением "промежуточных" значений операндов как это делает C#. Если кто-то написал подобный код, он должен отдавать себе отчет в том к каким последствиям сие приведет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2007, 09:05 |
|
||
|
Префиксные операции и стандарт
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)т.е. перед сложением дважды выполнить инкремент я вот сейчас подумал, что если выполнить вот такое: func(++i,++i); то может оказаться ..... проверил - точно, функция будет вызвана так: func(2,3); т.е. в разных вариантах "применения" одна и та же бяка вылезет разными боками, что не есть хорошо Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2007, 09:23 |
|
||
|
Префиксные операции и стандарт
|
|||
|---|---|---|---|
|
#18+
Ну тебе же сказали поведение не определено. Ты вот сам встань на место человека пишушего компилятор, вот что он сделает - возьмет первый параметр, инкрементирует, засунет в стек, возьмет второй - опять инкрементирует, засунет в стек. Что еще проверять его семантику? А всегда ли это возможно? может быть у тебя в качестве параметра выступает функция, имеющая "побочные эффекта", ну например изменяющая последующие параметры, да и находится она в другом модуле компиляции и что делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2007, 09:44 |
|
||
|
Префиксные операции и стандарт
|
|||
|---|---|---|---|
|
#18+
Карабас Барабася вот сейчас подумал, что если выполнить вот такое: func(++i,++i); то может оказаться ..... проверил - точно, функция будет вызвана так: func(2,3); т.е. в разных вариантах "применения" одна и та же бяка вылезет разными боками, что не есть хорошо Очень даже хорошо. Последовательное вычесление параметров функции. Другой вопрос - в каком порядке они вычисляются. Если порядок точно известен (и не изменится), то без боязни можно использовать такую запись, а если не уверен, то не рискуй. Об этом и предупреждает Саттер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2007, 10:04 |
|
||
|
Префиксные операции и стандарт
|
|||
|---|---|---|---|
|
#18+
Akh ты абсолютно неправ. А что будет ежели сменить компилятор? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2007, 10:09 |
|
||
|
Префиксные операции и стандарт
|
|||
|---|---|---|---|
|
#18+
blindedAkh ты абсолютно неправ. А что будет ежели сменить компилятор? Не спеши с таким утверждением. Порядок вычисления аргументов фунций С++ строго регламентируется. Для этого существует спецификатор функции. И не стоит бояться того, что сначала выполниться два инкеремента, а потом вычисляться парметры. Этого не будет никогда. Более того, даже у такого стандартного оператора как "," порядок тоже строго регламентирован. Правда только стандратного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2007, 10:17 |
|
||
|
Префиксные операции и стандарт
|
|||
|---|---|---|---|
|
#18+
Ребята хорош умничать... Результат таких операций не определен - это всем прекрасно известно. Тут речь идет об том, как было бы правильнее это дело стандартизировать (гипотетически). ----------------------- Объективная реальность – бред, вызванный недостатком алкоголя в крови ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2007, 10:24 |
|
||
|
Префиксные операции и стандарт
|
|||
|---|---|---|---|
|
#18+
blindedНу тебе же сказали поведение не определенокак раз это и обсуждаем blindedвстань на место человека пишушего компиляторвот потому-то как раз я и думаю, что изменение неопределенного поведения в сторону определенного - это хорошо. А если i - это не int, а TMySuperPuperClass ? Тогда даже одна и та же запись (++i)+(++i) будет работать по-разному для разных типов i. Это нехорошо. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2007, 10:28 |
|
||
|
Префиксные операции и стандарт
|
|||
|---|---|---|---|
|
#18+
v6yРебята хорош умничать... Результат таких операций не определен - это всем прекрасно известно. Тут речь идет об том, как было бы правильнее это дело стандартизировать (гипотетически). ----------------------- Объективная реальность – бред, вызванный недостатком алкоголя в крови Это разные вещи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2007, 10:32 |
|
||
|
Префиксные операции и стандарт
|
|||
|---|---|---|---|
|
#18+
Akh Это разные вещи. Одинаковые. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2007, 10:35 |
|
||
|
Префиксные операции и стандарт
|
|||
|---|---|---|---|
|
#18+
v6y Akh Это разные вещи. Одинаковые. Ну, раз ты ничего не знаешь про оператор ",", то что лезешь в обсуждение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2007, 10:44 |
|
||
|
Префиксные операции и стандарт
|
|||
|---|---|---|---|
|
#18+
v6yРебята хорош умничать... Результат таких операций не определен - это всем прекрасно известно. Тут речь идет об том, как было бы правильнее это дело стандартизировать (гипотетически). Умные парни из комитета уже о всем подумали. Ответ - НИКАК. Т.е. так, как сейчас есть в стандарте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2007, 10:59 |
|
||
|
Префиксные операции и стандарт
|
|||
|---|---|---|---|
|
#18+
Akh v6y Akh Это разные вещи. Одинаковые. Ну, раз ты ничего не знаешь про оператор ",", то что лезешь в обсуждение? Причем здесь оператор "," если речь идет о порядке вычисления префиксного оператора "++" ? P.S. Тебя забыл спросить куда мне лезть, а куда не лезть, салага. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2007, 11:44 |
|
||
|
Префиксные операции и стандарт
|
|||
|---|---|---|---|
|
#18+
v6y Akh v6y Akh Это разные вещи. Одинаковые. Ну, раз ты ничего не знаешь про оператор ",", то что лезешь в обсуждение? Причем здесь оператор "," если речь идет о порядке вычисления префиксного оператора "++" ? P.S. Тебя забыл спросить куда мне лезть, а куда не лезть, салага. При том, что пять предыдущих сообщений велись на другую тему. Если ты оставил комментарий не к текущему разговору, то будь добр отмечать это, а не флудить и оскорблять участников конференции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2007, 11:54 |
|
||
|
Префиксные операции и стандарт
|
|||
|---|---|---|---|
|
#18+
Akh Причем здесь оператор "," если речь идет о порядке вычисления префиксного оператора "++" ? При том, что пять предыдущих сообщений велись на другую тему. А еще где-то 30-35 предыдущих на эту? (риторический вопрос) Если ты оставил комментарий не к текущему разговору, то будь добр отмечать это, а не флудить и оскорблять участников конференции. Что ж, каждый видит обсуждение немного по своему. С моей точки зрения никаких оскорблений и флуда не было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2007, 12:57 |
|
||
|
Префиксные операции и стандарт
|
|||
|---|---|---|---|
|
#18+
Карабас Барабаспрефиксный оператор ++ выполняется ДО ИСПОЛЬЗОВАНИЯ переменной, это можно понимать и как ДО ВЫЧИСЛЕНИЯ ВСЕГО ВЫРАЖЕНИЯ, а раз переменная используется в выражении и есть префиксная операция с ней (++), то переменная должна быть увеличена. Несколько неправильная трактовка происходящего. правильней звучало бы так: операции постфиксного и префиксного инкремента имеют приоритет более высокий чем операции + и =, поэтому они вычисляются первыми.. А разница в работе постфиксного и префиксного инкремента заключается лишь в том, что префиксная операция увеличивает значение на 1 у объекта и возвращает полученное значение, а постфиксная увеличивает значение на 1 у объекта, а возвращает значение хранивщееся в обьете до увелечения. Карабас Барабас Код: plaintext 1. 2. 3. 4. Мнения ? должно выдавать 6, как и в первом варианте, но в Builder-ре действительно даёт 5, опираясь на приорететы операций, я лично считаю этот результат неправильным и неожиданным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2007, 16:32 |
|
||
|
Префиксные операции и стандарт
|
|||
|---|---|---|---|
|
#18+
батраквот и стандартописатели тоже поломали голову, поломали ... да и решили: "а пох, будет андефинид бехавиор, а кому не нравится, пускай на паскале пишут или на бейсике" Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2007, 16:57 |
|
||
|
Префиксные операции и стандарт
|
|||
|---|---|---|---|
|
#18+
Карабас Барабасвот и стандартописатели тоже поломали голову, поломали ... да и решили: "а пох, будет андефинид бехавиор, Думаю, не совсем так. Думаю, этот андефинед бихавиор - прямое следствие того факта, что к моменту создания стандарта существовали популярные компиляторы, использовавшие как тот, так и иной вариант. Ну а дальше - известная песня "в целях совместимости и чтоб никого не обидеть". Давно не заглядывал, но по моим воспоминаниям, в стандарте даже не было оговорки о том, что компилятор обязан считать такие вещи "всегда одинаково". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2007, 18:27 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=33718459&tid=2028877]: |
0ms |
get settings: |
5ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
149ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 200ms |
| total: | 423ms |

| 0 / 0 |
