Jump to content

    
artemkad

Откель такие приоритеты операций в Си?

Recommended Posts

3 часа назад, Herz сказал:

Приведите пример нормальных, очень интересно.

Меня пока ИАРовский редактор вполне устраивает.

3 часа назад, Herz сказал:

Не показательный пример. Посмотрите лучше вот такой вариант.

Да, вспомнил эту математику)))

Share this post


Link to post
Share on other sites
23 часа назад, tgruzd сказал:

У меня скорее всего VS неправильная, но парные скобочки подсвечивает как-то: 

А некоторые редакторы (привет, vscode) с недавних пор выделяют парные скобки цветом и без установки на них курсора.Side by side comparison with bracket pair colorization on and off

Share this post


Link to post
Share on other sites
3 минуты назад, tgruzd сказал:

уух! В следующей обнове ждём полноценных эмодзи :yes:

дада, "все чужие дополнения, коих нет у меня = ненужные свистелки".

Share this post


Link to post
Share on other sites

Не надо негатива, я просто отметил тенденцию. Пошутил типа. 

Я нормально отношусь к "свистелкам", если создатели ПО оставляют выбор пользователю, применять их или нет. Если лично вам они помогают - супер! Предпочитаете без них - отлично!

Лично я не согласен на полумеры и жду нормальных эмодзей)    

Share this post


Link to post
Share on other sites
21 минуту назад, sorok-odin сказал:

с недавних пор выделяют парные скобки цветом и без установки на них курсора.

Очень неплохо выглядит. Думаю, и жизнь облегчает.

Share this post


Link to post
Share on other sites
On 1/21/2022 at 8:59 PM, sorok-odin said:

А некоторые редакторы (привет, vscode) с недавних пор выделяют парные скобки цветом и без установки на них курсора.

Все, кто жалуется на излишние скобки в С просто не понимают своего счастья. В одной статье по поводу использования IDE (в смысле нужен vs не нужен - все true программисты пишут в блокноте) была фраза

Quote

IDE очень помогают при программировании на Lisp решить "тут достаточно 48 закрывающих скобок, или нужно 49?"

:biggrin:

Share this post


Link to post
Share on other sites
14.01.2022 в 22:35, one_eight_seven сказал:

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

ППКС. в шк всего 2 приоритета. в си около 17. Все знают что в си у Операторы "&","|" и "^" разный приоритет?: Не заглядывая в справочник расставите приоритеты между ними?

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

Я всегда расставляю приоритеты сам, вручную, скобками. Мне читать такой код понятнее.

14.01.2022 в 23:06, artemkad сказал:

Вы сможете однозначно сказать что является результатом успешного сравнения? К примеру чему равно

1. тип int.

14.01.2022 в 23:06, artemkad сказал:

Я не могу представить разработчика который рискнет выполнять арифметическую или побитную операцию с результатом сравнения.

рассчитываем управление вентиляции по некой формуле, причем, если на улице светло, то добавляем константу

#define ASD 314

p = a*b + c*g + ASD * (getLighting() >  lightingThreshold);

или собираем регистр статуса. в 0-ом бите нужно выставить бит в 1, если температура выше 40

statusReg = a | (temperature > 40);

Edited by razrab83

Share this post


Link to post
Share on other sites
1 час назад, razrab83 сказал:

что автор делает: он ошибся в приоритете, или он так и хотел сделать?

Например - автор написал: a+=b;

Как вы определяете: он ошибся и хотел написать a-=b? Или всё-таки a+=b?  А может он вообще имел в виду a|=b ?  :dash2:

Share this post


Link to post
Share on other sites
26 минут назад, jcxz сказал:

Например - автор написал: a+=b;

не нужно путать тёплое с мягким. тут явный оператор "+=". if(a - b < 10 || b & 0xF >= a - 1) - тут неявная "расстановка" приоритетов.

Share this post


Link to post
Share on other sites
19 минут назад, razrab83 сказал:

не нужно путать тёплое с мягким. тут явный оператор "+=". if(a - b < 10 || b & 0xF >= a - 1) - тут неявная "расстановка" приоритетов.

Не вижу разницы. Если написано a=b, то следуя вашей логике можно предположить, что писатель просто забыл написать '+', и должно быть: a+=b.

Вы же предполагаете, что там где скобок нет, они должны быть. Здесь то же самое.

Share this post


Link to post
Share on other sites

разница в том, что если явно написано "2+2" - это "2+2". Это явная запись "2+2", а не запись "Съешь ещё этих французских булочек".

Хотя, при желании "+" можно перегрузить, и это будет что угодно. Привет индусскому коду, аля typedef true false

а если написано "a | b ^ c & s" - тут неявная расстановка приоритетов, требующая помнить все 17 уровней. В неявных "операциях", гораздо чаще стрельнуть в ногу (отсыл к неявным приведениям типа, которые в с++ не приветствуются). Такой код "(a | (b ^ (c & s)))" даст такой же результат, но тут явно видно приоритеты. Даже если программист забыл, что "&" выше, чем "^", ни чего страшного, со скобками - ни автор, ни читающий не запутаются. 

 

13 минут назад, jcxz сказал:

Вы же предполагаете, что там где скобок нет, они должны быть.

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

ps

а ещё в шк и вузе, пишут писали z = (a + b) + (x + y). Математически это тоже самое, что и без скобок, но понятнее из чего складывается z, ровно как и понятнее из чего складывается такой if

if(((a - b) < 10) || ((b & 0xF) >= (a - 1)))

Share this post


Link to post
Share on other sites
1 hour ago, razrab83 said:

а ещё в шк и вузе, пишут писали z = (a + b) + (x + y).

а ещё бывает разная "странная" алгебра, например числа с плавающей точкой, где от такой расстановки скобок изменяется результат.

 

 

 

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.