|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
так как я явно задал приоритеты скобками, то ожидаю от компилятора разворачивание в вид a = (a+1) * (-1); b = (b+1) * (-1); c = (c+1) * (-1); соответственно ожидаю и ответы -2 для a, b, c. однако компилятор gcc выдает -1-2-1 а компилятор vc++ вообще выдал 0 -2 0 ----------- можете объяснить? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 08:09 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
про ПРЕ и ПОСТ я в курсе. но я явно задаю порядок. и почему разные компиляторы вычисляют по разному? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 09:09 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
eNose, Приоритет ни причем ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 09:12 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
eNose, каждый по своему прав авторПри использовании операции постинкремента значение переменной сначала используется в выражении, а потом увеличивается на 1студия думает, что выражение это вся строка гнус думает, что выражение ограничено скобками ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 11:36 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
Если убрать из кода пост-инкремент то появится хоть какой-то детерминизм. А без этого выражение - ребус. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 11:48 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
z = (a++)*(-1) это не то же самое что z = (a+1)*(-1), это скорее z = (a)*(-1); a += 1 возможно речь шла про z = (++a)*(-1), тут должно быть -2 Интересно что код Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
зависит от комментированной строки. Я такое уже как-то встречал, например Код: plaintext 1. 2. 3. 4. 5.
Если убрать if, то результат будет другим нежели с if(0) =) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 12:49 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
eNoseпро ПРЕ и ПОСТ я в курсе. но я явно задаю порядок. и почему разные компиляторы вычисляют по разному? Потому что UB a++ это не a+1, это означает при следующем чтении a будет больше на 1, а где произойдет сохранение увеличенного значения в a (по закрывающей скобке или по точке с запятой) остается на усмотрение компилятора. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 13:38 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
Не согласен, что это UB. Gcc прав. с = *pc++ - классика ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 13:42 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
UB это когда _один объект_ модифицируется _дважды_ в точке следования. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 13:45 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
SiemarglUB это когда _один объект_ модифицируется _дважды_ в точке следования. У него дважды "a =" и "a++" Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 13:48 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
Dima T, точно, присваивание то я и не заметил ) Но это не то, что спрашивал топик, на самом деле правильный пример для его вопроса, чтобы не влияло от скобочек =) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 13:54 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
Aklinz = (a++)*(-1) это не то же самое что z = (a+1)*(-1), это скорее z = (a)*(-1); a += 1 возможно речь шла про z = (++a)*(-1), тут должно быть -2 Интересно что код Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
зависит от комментированной строки. Я такое уже как-то встречал, например Код: plaintext 1. 2. 3. 4. 5.
Если убрать if, то результат будет другим нежели с if(0) =) В коде выше ясно, почему зависит, //int d = (a++)*(-1); увеличивает а а в вашем примере - загадка, почему ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 16:32 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
Один из поинтов почему ФП (Scala в частности) отказалась от пред- пост- инкремента. Он просто заменен на функцию сложения. (+) - это функция. Гарантии чистоты и отсуствия побочных эффектов потребовали. Код: plaintext 1.
В сях инкремент - мощная штука. В одном из жлобских ассемблеров (под PDP) кажется функции инкремента, разыменования и сравнения занимали 1 ассемблерную инструкцию. Точных ссылок я не помню. Могу ошибаться. Пускай знающие подскажут т.к. PDP это была .. не моя эпоха скажем так. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 16:53 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
maytonВ одном из жлобских ассемблеров (под PDP) кажется функции инкремента, разыменования и сравнения занимали 1 ассемблерную инструкцию. Там был автоинкрементный/декрементный способ адресации, применимый к любой операции и любому регистру. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 17:09 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
Инкремент/декремент есть во многих (возможно во всех) ассемблерах. Потому что технически проще на транзисторах сделать +1 чем +N. Но в ассемблере нет пред-/пост-. ИМХО это уже синтаксический сахар в чистом виде. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 17:56 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
eNose Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
так как я явно задал приоритеты скобками, то ожидаю от компилятора разворачивание в вид a = (a+1) * (-1); b = (b+1) * (-1); c = (c+1) * (-1); соответственно ожидаю и ответы -2 для a, b, c. однако компилятор gcc выдает -1-2-1 а компилятор vc++ вообще выдал 0 -2 0 ----------- можете объяснить? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 18:05 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
Вопрос немного не про то. Вот точная фраза из с++ референс в части приоритета операторов: Parts of the expressions can be enclosed in parenthesis to override this precedence order, or to make explicitly clear the intended effect. Я явно задал приоритеты скобками, компилятор съел код. Приоритет скобок ровно такой же как и у ++ независимо от пре или пост. Я вправе расчитывать управление ходом расчетов с помощью скобок, не так ли? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 18:18 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
eNoseЯ вправе расчитывать управление ходом расчетов с помощью скобок, не так ли? Вправе. Но ты должен пояснить почему ты ожидаешь от (a++) результат 2. Инкремент а при постфиксе происходит после получения его текущего значения и это не зависит от приоритета. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 18:30 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
Такое выражение Код: plaintext 1.
Эквивалентно Код: plaintext 1. 2.
Потому - что пост-инкремент исполняется после того как переменная поучаствовала в выражении. Но у тебя a стоит еще и слевой части присвоения (!). Вопрос. Что должен сделать компиллятор? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 18:34 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
maytonЧто должен сделать компиллятор? Нормальный компилятор (GCC) полностью вычислит всё, что справа от знака присваивания, включая побочные эффекты, перед выполнением собственно присваивания. У MS, очевидно, другое мнение. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 18:37 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
maytonТакое выражение Код: plaintext 1.
Эквивалентно Код: plaintext 1. 2.
Потому - что пост-инкремент исполняется после того как переменная поучаствовала в выражении. Но у тебя a стоит еще и слевой части присвоения (!). Вопрос. Что должен сделать компиллятор? компилятор должен выплюнуть ошибку. Либо таки воспользоваться приоритетом скобок. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 18:38 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
eNosemaytonТакое выражение Код: plaintext 1.
Эквивалентно Код: plaintext 1. 2.
Потому - что пост-инкремент исполняется после того как переменная поучаствовала в выражении. Но у тебя a стоит еще и слевой части присвоения (!). Вопрос. Что должен сделать компиллятор? компилятор должен выплюнуть ошибку. Либо таки воспользоваться приоритетом скобок. Причем здесь скобки? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 18:40 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
eNoseЛибо таки воспользоваться приоритетом скобок. У тебя в скобках операция, гарантированным результатом которой является старое значение переменной. Скобки этого не в состоянии изменить. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 18:40 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovmaytonЧто должен сделать компиллятор? Нормальный компилятор (GCC) полностью вычислит всё, что справа от знака присваивания, включая побочные эффекты, перед выполнением собственно присваивания. У MS, очевидно, другое мнение. операция присваивани, такая же операция - 21809246 , весь вопрос где заканчивается выражение ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 18:41 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
Этому бояну много лет. И здесь в скруле он уже звучал. Можно И-нозу кинуть ссылку. Там вроде-уже обсуждалось и UB и компилляторы. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 18:46 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
maytoneNoseпропущено... компилятор должен выплюнуть ошибку. Либо таки воспользоваться приоритетом скобок. Причем здесь скобки? при том что a=-a++ и a=-(a++) одно и тоже, хотя написано что скобки управляют приоритетом. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 18:47 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
maytonЭтому бояну много лет. И здесь в скруле он уже звучал. Можно И-нозу кинуть ссылку. Там вроде-уже обсуждалось и UB и компилляторы. вообще мне уже объяснили что код не олимпиадный, то и нефиг выпендриваться. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 18:49 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
eNosemaytonпропущено... Причем здесь скобки? при том что a=-a++ и a=-(a++) одно и тоже, хотя написано что скобки управляют приоритетом.а что неправильно? приоритеты этих операций равны, порядок выполнение в С++ справа налево ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 18:49 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
kealon(Ruslan)eNoseпропущено... при том что a=-a++ и a=-(a++) одно и тоже, хотя написано что скобки управляют приоритетом.а что неправильно? приоритеты этих операций равны, порядок выполнение в С++ справа налево ну и пусть выполнит сначала то, что в скобках. Полностью, как отдельную операцию. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 18:51 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
kealon(Ruslan)весь вопрос где заканчивается выражение В данном случае это всё равно: приоритет инкремента в любом случае выше присваивания и выражение "a = a++" никак не должно вычисляться как "(a = a)++". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 18:52 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovkealon(Ruslan)весь вопрос где заканчивается выражение В данном случае это всё равно: приоритет инкремента в любом случае выше присваивания и выражение "a = a++" никак не должно вычисляться как "(a = a)++". a=(a++) как должно вычисляться? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 18:54 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
eNosemaytonЭтому бояну много лет. И здесь в скруле он уже звучал. Можно И-нозу кинуть ссылку. Там вроде-уже обсуждалось и UB и компилляторы. вообще мне уже объяснили что код не олимпиадный, то и нефиг выпендриваться. Уже несколько человек тебе написало про UB и разницу в поведении компилляторов. Сколько еще ты ожидаешь постов на эту тему? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 18:55 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
eNoseЯ вправе расчитывать управление ходом расчетов с помощью скобок, не так ли? Нет, т.к. в С/С++ есть такое понятие как UB (непредсказуемое поведение) в определенных случаях и описанный случай один из них. UB - это свобода компилятору создавать оптимальный код. Это описано в стандарте С/С++. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 18:59 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovkealon(Ruslan)весь вопрос где заканчивается выражение В данном случае это всё равно: приоритет инкремента в любом случае выше присваивания и выражение "a = a++" никак не должно вычисляться как "(a = a)++". кто сказал что постинкремент это "цельная" операция? авторПри использовании операции постинкремента значение переменной сначала используется в выражении, а потом увеличивается на 1 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 19:01 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
Кстати этот код не должен проходить code-review. Поэтому вопрос его корректного использования отпадает вобщем-то. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 19:02 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovkealon(Ruslan)весь вопрос где заканчивается выражение В данном случае это всё равно: приоритет инкремента в любом случае выше присваивания и выражение "a = a++" никак не должно вычисляться как "(a = a)++". я отвечал на другой вопрос, в контексте этого ответа Код: plaintext 1. 2. 3.
одно и тоже, ибо если по правилам убрать скобки из второго, получится первое ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 19:04 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
maytonКстати этот код не должен проходить code-review. Поэтому вопрос его корректного использования отпадает вобщем-то. Плохо что код проходит через компилятор без единого варнинга, по крайней мере в MSVC. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 19:08 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
Dima TmaytonКстати этот код не должен проходить code-review. Поэтому вопрос его корректного использования отпадает вобщем-то. Плохо что код проходит через компилятор без единого варнинга, по крайней мере в MSVC. Код: php 1. 2. 3. 4. 5. 6. 7. 8.
gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.11) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 19:17 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
kealon(Ruslan)кто сказал что постинкремент это "цельная" операция? https://en.cppreference.com/w/cpp/language/operator_incdec The operand expr of a built-in postfix increment or decrement operator must be a modifiable (non-const) lvalue of non-boolean arithmetic type or pointer to complete object type. The result is prvalue copy of the original value of the operand. As a side-effect, for non-boolean operands, the expression x++ modifies the value of its operand as if by evaluating x += 1 Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 19:21 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
Иноз? Прояснилось? И я закрою тему вобщем-то. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 19:25 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, в этом выражении ни слова, когда должно быть сделано увеличение значения ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 19:25 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
maytonИноз? Прояснилось? И я закрою тему вобщем-то. вопрос был исключительно про скобки. расхождение явно обозначенного в документации с компиляторами. тему можно удалять, так как никто не в состоянии объяснить это расхождение с точки зрения документации. в ней ни слова про "кроме таких то случаев". ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 19:29 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
более того, явно сказано, что скобками я могу управлять приоритетом. а по факту получается что не всегда. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 19:29 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
eNosemaytonИноз? Прояснилось? И я закрою тему вобщем-то. вопрос был исключительно про скобки. расхождение явно обозначенного в документации с компиляторами. тему можно удалять, так как никто не в состоянии объяснить это расхождение с точки зрения документации. в ней ни слова про "кроме таких то случаев".вам уже раз ять... объяснили, не надо валить с больной головы на здоровую перепишите выражения в польскую нотацию и сравните ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 19:32 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
kealon(Ruslan)eNoseпропущено... вопрос был исключительно про скобки. расхождение явно обозначенного в документации с компиляторами. тему можно удалять, так как никто не в состоянии объяснить это расхождение с точки зрения документации. в ней ни слова про "кроме таких то случаев".вам уже раз ять... объяснили, не надо валить с больной головы на здоровую перепишите выражения в польскую нотацию и сравните выражение синтаксически верно? верно. в документации указано про управлении скобками? указано. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 19:34 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
eNose, указано, но выводы вы делаете неправильные ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 19:35 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
eNoseболее того, явно сказано, что скобками я могу управлять приоритетом. Никакие скобки и приоритеты не могут заставить пост-инкремент вернуть новое значение переменной. См. процитированное выше. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 19:35 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
kealon(Ruslan)eNose, указано, но выводы вы делаете неправильные 2+2=4, но выводы я делаю неправильные. топик можно закрывать :) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 19:43 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
eNoseЯ явно задал приоритеты скобками, компилятор съел код. Приоритет скобок ровно такой же как и у ++ независимо от пре или пост. Я вправе расчитывать управление ходом расчетов с помощью скобок, не так ли?Ты дал компилятору две операции присваивания в рамках одной строчки, компилятор выбрал приоритет этих присваиваний на свой вкус. Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 19:59 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
Dimitry SibiryakoveNoseЯ вправе расчитывать управление ходом расчетов с помощью скобок, не так ли? Вправе. Но ты должен пояснить почему ты ожидаешь от (a++) результат 2. Инкремент а при постфиксе происходит после получения его текущего значения и это не зависит от приоритета. Не вправе. Приоритет операций это не то же самое что порядок выполнения. Приоритет операций существует только при синтаксическом анализе. При выполнении там порядок может быть произвольным (в пределах стандарта), главное чтобы каждое подвыражение вычислялось после его аргументов. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 20:00 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
Aklinкомпилятор выбрал приоритет этих присваиваний на свой вкус жесть ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 20:00 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
Anatoly MoskovskyПриоритет операций это не то же самое что порядок выполнения. x=2+3*5; x=(2+3)*5; ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 20:01 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovты должен пояснить почему ты ожидаешь от (a++) результат 2 потому что написано, что с помощью скобок я могу управлять ходом вычисления ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 20:06 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
Найди любое описание как работает "пост инкремент". И запость сюда в форум. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 20:17 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
maytonНайди любое описание как работает "пост инкремент". И запость сюда в форум. https://ravesli.com/urok-40-inkrement-dekrement-pobochnye-effekty/ про побочные эффекты, которые возникают из-за "C++ не определяет порядок, в котором вычисляются аргументы функции." в принципе понятно. надо было только явно написать об этом в документации, а не оставлять на откуп производителям компиляторов. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 20:22 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
eNoseнаписано, что с помощью скобок я могу управлять ходом вычисления Где это так врут? Скобки управляют именно приоритетом: When parsing an expression, an operator which is listed on some row of the table above with a precedence will be bound tighter (as if by parentheses) to its arguments than any operator that is listed on a row further below it with a lower precedence. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 20:25 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
Dimitry SibiryakoveNoseнаписано, что с помощью скобок я могу управлять ходом вычисления Где это так врут? Скобки управляют именно приоритетом: When parsing an expression, an operator which is listed on some row of the table above with a precedence will be bound tighter (as if by parentheses) to its arguments than any operator that is listed on a row further below it with a lower precedence. в "плоском" выражении без вызова других функций это и есть ход вычисления ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 20:26 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
eNoseв принципе понятно. надо было только явно написать об этом в документации, а не оставлять на откуп производителям компиляторов. Есть стандарт С/С++, считай ТЗ для разработчика компилятора, там написано что это UB. Разработчики компиляторов (не все) предупреждают что код проблемный 21809886 . Что еще надо? PS Вчера звонил один жестко накосячивший юзер с наездом что моя прога плохо работает. А то что прога дала два предупреждения о косяке и юзер дважды нажал проигорировать - это недоработка моей проги (((( ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 20:30 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
eNoseв "плоском" выражении без вызова других функций это и есть ход вычисления Нет конечно. Начнем с того что например порядок выполнения того же постинкремента (время вычисления возвращаемого значения и время вычисления побочного эффекта) никак синтаксически нельзя выразить. Это просто описано в стандарте. Поэтому приоритет операций там никакого значения не имеет. А то что в каких-то простейших частных случаях приоритет влияет на порядок, так это просто потому, что синтаксис специально разрабатывают так чтобы простую программу было проще писать. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 21:15 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
eNoseDimitry Sibiryakovты должен пояснить почему ты ожидаешь от (a++) результат 2 потому что написано, что с помощью скобок я могу управлять ходом вычисления Вы утомили. Я же привел пример 21809438 - что проблема не в скобках справа, а в самой операции присвоения. Скобки можно расставлять по вкусу. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 21:57 |
|
вопрос про приоритеты операций
|
|||
---|---|---|---|
#18+
их перестановка не влияет на результат. И в MSVC работает тоже как нужно и ожидается. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2019, 22:06 |
|
|
start [/forum/topic.php?all=1&fid=57&tid=2017663]: |
0ms |
get settings: |
11ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
77ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 173ms |
0 / 0 |