Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить

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

Вс фев 11, 2024 22:31:08

что значит - элементарная операция? вот для меня такая запись элементарна:
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, то чему будет равно а?

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

Пн фев 12, 2024 12:48:35

А почему тогда "%1000/100" вызвала затруднения?

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

Пн фев 12, 2024 13:34:04

потому, что оптимизатор нехило так переменные в константы может записать и оптимизировать, не говоря уж о явных. Я не знаю всех тонкостей каждого оптимизатора, поэтому просто поставлю скобки и таким несложным действием избегу неожиданного геморроя в простом алгоритме. И даже если при этом буду выглядеть идиотом, ставящим скобки в "паре элементарных операций", это лучше, чем бить себя пяткой в грудь, утверждая, что супер-пупер программист, прочитавший все книжки, помнящий все приоритеты, работавший со всеми компиляторами (как jcxz), и поэтому нахер скобки.

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

Пн фев 12, 2024 13:40:48

Ни один оптимизатор никогда не нарушит приоритет операций.

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

Пн фев 12, 2024 14:05:14

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

Но ок.
Мне не станет легче вера в непогрешимость оптимизатора: я не помню, % имеет равный приоритет, выше, ниже, чем /.
Приходится работать с разным проектами, и помнить, что в Си какие-то операции имеют один и тот же приоритет, а в Яве - нет... да ну нафиг. Скобки.

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

Пн фев 12, 2024 14:34:46

Из C Operator Precedence:
Код:
Precedence: 3
Operator: * / %
Description: Multiplication, division, and remainder
Associativity: Left-to-right

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

Пн фев 12, 2024 14:44:43

Объединить одинаковые операторы / или два разных % и / не одно и то же.

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

Пн фев 12, 2024 14:54:42

а ++ и ++ одинаковые или разные?
Не совсем понимаю, что вы все пытаетесь мне доказать? Что не надо ставить скобки, потому что нужно помнить все приоритеты, все "лево-право" во всех языках? Хорошо. Значит, я - хреновый программист и идиот, потому что ставлю скобки и не помню приоритеты, и постоянно запрещаю оптимизатору всякие вольности, а они ведь идеальные, у них в багрепорте пустота сплошная...
На этом предлагаю закончить. Пойду в мяууу, а вы продолжайте учить, что скобки - зло.

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

Пн фев 12, 2024 15:40:45

прочитавший все книжки, помнящий все приоритеты, работавший со всеми компиляторами (как jcxz)
Я вообще то такого не говорил. Не надо передёргивать. И сам иногда заглядываю в приоритеты в сложных случаях. Но приоритеты и порядок выполнения для +,-,*,/ должен быть известен любому ещё с 4-го класса средней школы. В си их порядок идентичный.

Добавлено after 10 minutes 9 seconds:
а ++ и ++ одинаковые или разные?
Разные. Есть префиксный, есть постфиксный.
Не совсем понимаю, что вы все пытаетесь мне доказать?
Что никаких объединений % и / никакой оптимизатор не сделает. Объединяться (оптимизироваться) операции могут только в том случае, если такая оптимизация не приводит к нарушению правильности результата. В последовательности % 1000 / 100 это условие не выполняется.

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

Пн фев 12, 2024 15:46:42

да пофиг
Последний раз редактировалось Martian Пн фев 12, 2024 15:53:31, всего редактировалось 2 раз(а).

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

Пн фев 12, 2024 15:48:15

Не совсем понимаю, что вы все пытаетесь мне доказать?
Что оптимизатор не может изменить значение выражения.

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

Пн фев 12, 2024 16:04:48

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

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

Пн фев 12, 2024 18:14:39

Уже много лет как виноват в этом только программист.

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

Вт фев 13, 2024 11:12:19

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

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

Вт фев 13, 2024 12:49:09

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

У одного зарубежного автора я прочитал:
"Некоторые программисты считают, что мировой запас скобок ограничен и поэтому применяют их крайне редко.". Сарказм понятен и оправдан. Я считаю, что "лишние" скобки не нарушат работу компилятора и не будут в самом деле лишними, даже если программер назубок помнит все приоритеты операций. В конце концов, читаемость исходника будет лучшей. Даже если не заботиться о переносимости.

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

Вт фев 13, 2024 15:50:39

виноват, конечно программист, но не тот, что код писал, а тот, что писал компилятор
За несколько десятков лет профессиональной деятельности лишь однажды находил ошибку компилятора. А вас послушать, так через день. Я конечно, не Станиславский, но НЕ ВЕРЮ.

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

Вт фев 13, 2024 18:49:33

вопросы веры - дело тонкое... и обсуждение этого смысла не имеет

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

Вт фев 13, 2024 19:01:17

Bugreport у каждого компилятора есть.

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

Вт фев 13, 2024 19:29:34

Какое это всё имеет отношение к вычислению выражений?

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

Вт фев 13, 2024 20:32:02

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