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

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Мудрый кот
Сообщения: 1836
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="Martian",url="/forum/viewtopic.php?p=4542069#p4542069"]Если требуется определённый порядок выполнения операций с равным приоритетом, то используют скобки. Знаете такие символы ()? Дичь - это писать без них. А оптимизатор легко упростит, если захочет, потому что ему абсолютно похер, что это программист решил какую-то цифру в числе выделить.[/uquote]Опять бред несёте... Вам бы учебник по си почитать что-ли? Который сами же рекомендовали выше. 8)
Язык си чётко регламентирует как приоритеты операций, так и направление их выполнения на разных уровнях приоритета.
В выражении display % 1000 /100 все операции имеют одинаковый приоритет и направление выполнения - слева направо. И никаких оптимизаций вменяемый оптимизатор здесь не сделает.

А скобки где ни попадя, городят только неумехи, не сумевшие прочитать и усвоить порядок приоритета и направление операций.
Реклама
Мудрый кот
Сообщения: 1836
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="ARV",url="/forum/viewtopic.php?p=4542094#p4542094"]Приоритет должен быть один: писать так, чтобы понял даже дебил. Поэтому скобок жалеть не стоит[/uquote]Ну если пишете для дебила. Но обычно программист пишет для себя. Чтобы самому потом можно было прочитать и разобраться.
Так что - если вы пишете в расчёте на дебила при том что читать это будете сами, то..... печалька :)))
Реклама
Мудрый кот
Сообщения: 1836
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

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

Сообщение VladislavS »

А почему тогда "%1000/100" вызвала затруднения?
Реклама
Эиком - электронные компоненты и радиодетали
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Ни один оптимизатор никогда не нарушит приоритет операций.
Реклама
Поставщик валерьянки для Кота
Сообщения: 1972
Зарегистрирован: Сб май 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 »

Объединить одинаковые операторы / или два разных % и / не одно и то же.
Мудрый кот
Сообщения: 1836
Зарегистрирован: Вт авг 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 это условие не выполняется.
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

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

Сообщение ARV »

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

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

Сообщение VladislavS »

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

Сообщение ARV »

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

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 6347
Зарегистрирован: Вт апр 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
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18787
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

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

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

Сообщение VladislavS »

Какое это всё имеет отношение к вычислению выражений?
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Куда предлагаете скобки поставить?
Мудрый кот
Сообщения: 1836
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="Jack_A",url="/forum/viewtopic.php?p=4542835#p4542835"]Я считаю, что "лишние" скобки не нарушат работу компилятора и не будут в самом деле лишними, даже если программер назубок помнит все приоритеты операций. В конце концов, читаемость исходника будет лучшей. Даже если не заботиться о переносимости.[/uquote]Бессмысленное утверждение. Примерно как утверждать, что брюнетки лучше блондинок. Это дело вкуса. Если для вас толпа скобок в строке улучшает читаемость, то для другого - ухудшает.

Добавлено after 6 minutes 17 seconds:
[uquote="ARV",url="/forum/viewtopic.php?p=4542800#p4542800"]ну да, ну да... один и тот же код с -lto в одной версии компилятора собирается нормально и работает, а после сборки в более новой версии компилятора получается 0 байт исполняемого кода... виноват, конечно программист, но не тот, что код писал, а тот, что писал компилятор[/uquote]Приведите пример такого кода. Иначе - это пустой трёп.

PS: Кто-то видит летающие тарелки с зелёными человечками. Но не может привести доказательств.
Кто-то - корректный код, который не компилится правильно компилятором. Но не может его показать.
Это примерно из одной оперы.... :dont_know:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18787
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Пример кода? У меня проект из пары десятков файлов, и публиковать их я не имею желания. LTO от версии к версии avr-gcc дает абсолютно разные результаты: может обнулять выхлоп, может давать полностью рабочий файл минимального размера, а может выдать полностью нерабочий вариант.
Можете не верить (см. ранее о вере), мне пофиг.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Открыл глаза
Сообщения: 60
Зарегистрирован: Вс ноя 13, 2022 14:58:17

Сообщение Bill_ »

[uquote="jcxz",url="/forum/viewtopic.php?p=4542097#p4542097"][uquote="Martian",url="/forum/viewtopic.php?p=4542069#p4542069"]Если требуется определённый порядок выполнения операций с равным приоритетом, то используют скобки. Знаете такие символы ()? Дичь - это писать без них. А оптимизатор легко упростит, если захочет, потому что ему абсолютно похер, что это программист решил какую-то цифру в числе выделить.[/uquote]Опять бред несёте... Вам бы учебник по си почитать что-ли? Который сами же рекомендовали выше. 8)
Язык си чётко регламентирует как приоритеты операций, так и направление их выполнения на разных уровнях приоритета.
В выражении display % 1000 /100 все операции имеют одинаковый приоритет и направление выполнения - слева направо. И никаких оптимизаций вменяемый оптимизатор здесь не сделает.

А скобки где ни попадя, городят только неумехи, не сумевшие прочитать и усвоить порядок приоритета и направление операций.[/uquote]
Вообще-то, в данном выражении имеются константы. Свёртка констант в выражениях является наиболее простым видом оптимизации. Поэтому данное выражение компилятор вероятно сведёт к выражению display % 10. Или нет?
Ответить

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