Вопросы по С/С++ (СИ)

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

что значит - элементарная операция? вот для меня такая запись элементарна:
a = b * c + d ? e : f;

если b = 1, c = 2, d = 0, e = 3, f = 4, то чему будет равно а?

Добавлено after 3 minutes 52 seconds:
ой, здесь три операции. упростим до "пары элементарных":

a = b + с ? d :e;

если b = 1, c = 0, d = 3, e = 4, то чему будет равно а?
Контактная информация:
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

А почему тогда "%1000/100" вызвала затруднения?
Реклама
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

потому, что оптимизатор нехило так переменные в константы может записать и оптимизировать, не говоря уж о явных. Я не знаю всех тонкостей каждого оптимизатора, поэтому просто поставлю скобки и таким несложным действием избегу неожиданного геморроя в простом алгоритме. И даже если при этом буду выглядеть идиотом, ставящим скобки в "паре элементарных операций", это лучше, чем бить себя пяткой в грудь, утверждая, что супер-пупер программист, прочитавший все книжки, помнящий все приоритеты, работавший со всеми компиляторами (как jcxz), и поэтому нахер скобки.
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Ни один оптимизатор никогда не нарушит приоритет операций.
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

Я не говорю о нарушении приоритетов. Я говорю, что, увидя /10/100 в равноприоритетных, оптимизатор хмыкнет и сделает /1000.
Пример: a = b * c / 10 /100;
Полагаю, тут никто не возразит, что если оптимизируется до a = b * c / 1000; то нормально.

Но ок.
Мне не станет легче вера в непогрешимость оптимизатора: я не помню, % имеет равный приоритет, выше, ниже, чем /.
Приходится работать с разным проектами, и помнить, что в Си какие-то операции имеют один и тот же приоритет, а в Яве - нет... да ну нафиг. Скобки.
Контактная информация:
Реклама
Поставщик валерьянки для Кота
Сообщения: 1920
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария

Сообщение veso74 »

Из C Operator Precedence:

Код: Выделить всё

Precedence: 3
Operator: * / %
Description: Multiplication, division, and remainder
Associativity: Left-to-right
Контактная информация:
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Объединить одинаковые операторы / или два разных % и / не одно и то же.
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

а ++ и ++ одинаковые или разные?
Не совсем понимаю, что вы все пытаетесь мне доказать? Что не надо ставить скобки, потому что нужно помнить все приоритеты, все "лево-право" во всех языках? Хорошо. Значит, я - хреновый программист и идиот, потому что ставлю скобки и не помню приоритеты, и постоянно запрещаю оптимизатору всякие вольности, а они ведь идеальные, у них в багрепорте пустота сплошная...
На этом предлагаю закончить. Пойду в мяууу, а вы продолжайте учить, что скобки - зло.
Контактная информация:
Мудрый кот
Сообщения: 1755
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="Martian",url="/forum/viewtopic.php?p=4542370#p4542370"]прочитавший все книжки, помнящий все приоритеты, работавший со всеми компиляторами (как jcxz)[/uquote]Я вообще то такого не говорил. Не надо передёргивать. И сам иногда заглядываю в приоритеты в сложных случаях. Но приоритеты и порядок выполнения для +,-,*,/ должен быть известен любому ещё с 4-го класса средней школы. В си их порядок идентичный.

Добавлено after 10 minutes 9 seconds:
[uquote="Martian",url="/forum/viewtopic.php?p=4542425#p4542425"]а ++ и ++ одинаковые или разные?[/uquote]Разные. Есть префиксный, есть постфиксный.
[uquote="Martian",url="/forum/viewtopic.php?p=4542425#p4542425"]Не совсем понимаю, что вы все пытаетесь мне доказать?[/uquote]Что никаких объединений % и / никакой оптимизатор не сделает. Объединяться (оптимизироваться) операции могут только в том случае, если такая оптимизация не приводит к нарушению правильности результата. В последовательности % 1000 / 100 это условие не выполняется.
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

да пофиг
Последний раз редактировалось Martian Пн фев 12, 2024 15:53:31, всего редактировалось 2 раза.
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="Martian",url="/forum/viewtopic.php?p=4542425#p4542425"]Не совсем понимаю, что вы все пытаетесь мне доказать?[/uquote]Что оптимизатор не может изменить значение выражения.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18767
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

оптимизаторы - они такое... включишь внезапно оптимизацию -lto, а на выходе - бац! - 0 байт бинарного файла... вот и думаешь, что ж такое наоптимизировало... но значения выражений оптимизатор, конечно, не меняет.
вот только не выдает на выход...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Уже много лет как виноват в этом только программист.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18767
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

ну да, ну да... один и тот же код с -lto в одной версии компилятора собирается нормально и работает, а после сборки в более новой версии компилятора получается 0 байт исполняемого кода... виноват, конечно программист, но не тот, что код писал, а тот, что писал компилятор
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 6332
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Сообщение Jack_A »

[uquote="Martian",url="/forum/viewtopic.php?p=4542425#p4542425"]не надо ставить скобки, потому что нужно помнить все приоритеты, все "лево-право" во всех языках?[/uquote]
У одного зарубежного автора я прочитал:
"Некоторые программисты считают, что мировой запас скобок ограничен и поэтому применяют их крайне редко.". Сарказм понятен и оправдан. Я считаю, что "лишние" скобки не нарушат работу компилятора и не будут в самом деле лишними, даже если программер назубок помнит все приоритеты операций. В конце концов, читаемость исходника будет лучшей. Даже если не заботиться о переносимости.
Изображение
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="ARV",url="/forum/viewtopic.php?p=4542800#p4542800"]виноват, конечно программист, но не тот, что код писал, а тот, что писал компилятор[/uquote]За несколько десятков лет профессиональной деятельности лишь однажды находил ошибку компилятора. А вас послушать, так через день. Я конечно, не Станиславский, но НЕ ВЕРЮ.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18767
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

вопросы веры - дело тонкое... и обсуждение этого смысла не имеет
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

Bugreport у каждого компилятора есть.
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Какое это всё имеет отношение к вычислению выражений?
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

никакого. компилятор безупречен, оптимизатор безупречен, даны нам с небес, а скобки - злое порождение дьявола, хуже них только goto.
https://developercommunity.visualstudio ... +preview+3
Контактная информация:
Ответить

Вернуться в «Разные вопросы по МК»