[uquote="Martian",url="/forum/viewtopic.php?p=4542069#p4542069"]Если требуется определённый порядок выполнения операций с равным приоритетом, то используют скобки. Знаете такие символы ()? Дичь - это писать без них. А оптимизатор легко упростит, если захочет, потому что ему абсолютно похер, что это программист решил какую-то цифру в числе выделить.[/uquote]Опять бред несёте... Вам бы учебник по си почитать что-ли? Который сами же рекомендовали выше.
Язык си чётко регламентирует как приоритеты операций, так и направление их выполнения на разных уровнях приоритета.
В выражении display % 1000 /100 все операции имеют одинаковый приоритет и направление выполнения - слева направо. И никаких оптимизаций вменяемый оптимизатор здесь не сделает.
А скобки где ни попадя, городят только неумехи, не сумевшие прочитать и усвоить порядок приоритета и направление операций.
[uquote="ARV",url="/forum/viewtopic.php?p=4542094#p4542094"]Приоритет должен быть один: писать так, чтобы понял даже дебил. Поэтому скобок жалеть не стоит[/uquote]Ну если пишете для дебила. Но обычно программист пишет для себя. Чтобы самому потом можно было прочитать и разобраться.
Так что - если вы пишете в расчёте на дебила при том что читать это будете сами, то..... печалька
[uquote="Martian",url="/forum/viewtopic.php?p=4542103#p4542103"]я бы тебе мог кучу примеров привести, где ты задолбаешься вспоминать приоритеты, но ты же поступишь нечестно, полезешь в гугл смотреть, поэтому, оставайся в своём заблуждении, "пишущий для себя".[/uquote]Я могу согласиться, что иногда скобки (даже если они реально не нужны) полезно поставить если выражение очень сложное, громоздкое и визуально трудно воспринимается. Но лепить их в простейшем выражении из всего двух элементарных операций... - это, имхо, верх маразма.
[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 это условие не выполняется.
[uquote="Martian",url="/forum/viewtopic.php?p=4542425#p4542425"]Не совсем понимаю, что вы все пытаетесь мне доказать?[/uquote]Что оптимизатор не может изменить значение выражения.
оптимизаторы - они такое... включишь внезапно оптимизацию -lto, а на выходе - бац! - 0 байт бинарного файла... вот и думаешь, что ж такое наоптимизировало... но значения выражений оптимизатор, конечно, не меняет.
вот только не выдает на выход...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
ну да, ну да... один и тот же код с -lto в одной версии компилятора собирается нормально и работает, а после сборки в более новой версии компилятора получается 0 байт исполняемого кода... виноват, конечно программист, но не тот, что код писал, а тот, что писал компилятор
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
[uquote="Martian",url="/forum/viewtopic.php?p=4542425#p4542425"]не надо ставить скобки, потому что нужно помнить все приоритеты, все "лево-право" во всех языках?[/uquote]
У одного зарубежного автора я прочитал:
"Некоторые программисты считают, что мировой запас скобок ограничен и поэтому применяют их крайне редко.". Сарказм понятен и оправдан. Я считаю, что "лишние" скобки не нарушат работу компилятора и не будут в самом деле лишними, даже если программер назубок помнит все приоритеты операций. В конце концов, читаемость исходника будет лучшей. Даже если не заботиться о переносимости.
[uquote="ARV",url="/forum/viewtopic.php?p=4542800#p4542800"]виноват, конечно программист, но не тот, что код писал, а тот, что писал компилятор[/uquote]За несколько десятков лет профессиональной деятельности лишь однажды находил ошибку компилятора. А вас послушать, так через день. Я конечно, не Станиславский, но НЕ ВЕРЮ.
[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: Кто-то видит летающие тарелки с зелёными человечками. Но не может привести доказательств.
Кто-то - корректный код, который не компилится правильно компилятором. Но не может его показать.
Это примерно из одной оперы....
Пример кода? У меня проект из пары десятков файлов, и публиковать их я не имею желания. LTO от версии к версии avr-gcc дает абсолютно разные результаты: может обнулять выхлоп, может давать полностью рабочий файл минимального размера, а может выдать полностью нерабочий вариант.
Можете не верить (см. ранее о вере), мне пофиг.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
[uquote="jcxz",url="/forum/viewtopic.php?p=4542097#p4542097"][uquote="Martian",url="/forum/viewtopic.php?p=4542069#p4542069"]Если требуется определённый порядок выполнения операций с равным приоритетом, то используют скобки. Знаете такие символы ()? Дичь - это писать без них. А оптимизатор легко упростит, если захочет, потому что ему абсолютно похер, что это программист решил какую-то цифру в числе выделить.[/uquote]Опять бред несёте... Вам бы учебник по си почитать что-ли? Который сами же рекомендовали выше.
Язык си чётко регламентирует как приоритеты операций, так и направление их выполнения на разных уровнях приоритета.
В выражении display % 1000 /100 все операции имеют одинаковый приоритет и направление выполнения - слева направо. И никаких оптимизаций вменяемый оптимизатор здесь не сделает.
А скобки где ни попадя, городят только неумехи, не сумевшие прочитать и усвоить порядок приоритета и направление операций.[/uquote]
Вообще-то, в данном выражении имеются константы. Свёртка констант в выражениях является наиболее простым видом оптимизации. Поэтому данное выражение компилятор вероятно сведёт к выражению display % 10. Или нет?