реклама на сайте
подробности

 
 
> Вопрос(ы) по коду
Jenya7
сообщение Jun 14 2018, 14:12
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Я тут перевожу чужой код на новую платформу. Встретился такой код
Код
if(g_sPreset[g_uiCounterPush] < g_sPreset_max[g_uiCounterPush])
    g_sPreset[g_uiCounterPush]++;
как компилятор это увидит g_sPreset++ или g_sPreset[g_uiCounterPush++] ?

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
k155la3
сообщение Jun 15 2018, 10:57
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



IMHO: Использование постфиксных, и тем более - префиксных ++ в составе выражения ухудшает читабельность кода.
Смысла особого в такой "упаковке" не вижу. Компилятору - это филоетово, Будет ли оптимизация у исполнимого кода,
и к чему она приведет при таком написании - вопрос. Имело смысл, когда тактовая процессора измерялась килогерцами.
Хотя если задача - запутать читающего - то "самое-то" sm.gif
Go to the top of the page
 
+Quote Post
esaulenka
сообщение Jun 15 2018, 12:42
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



Цитата(k155la3 @ Jun 15 2018, 13:57) *
IMHO: Использование постфиксных, и тем более - префиксных ++ в составе выражения ухудшает читабельность кода.

Что в данном конкретном примере нечитабельно?
Просто и наглядно: если значение в первом массиве меньше, чем соответствующее значение во втором, увеличиваем это значение.
Как это можно понять по-другому?!

А тема занятная получилась. Выяснилось, что приоритет операций в стандарте C99 явно не описан (наверное, его можно восстановить из форм Бэкуса-Наура, но уж больно лень) и он отличается (!) от приоритетов C++.
Хотя, конечно, стандарты C++ писали неглупые люди и про совместимость они подумали. Лично я ни разу не наступил на грабли, пользуясь им в этой части при написании сишного кода.


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
k155la3
сообщение Jun 15 2018, 14:11
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(esaulenka @ Jun 15 2018, 15:42) *
Что в данном конкретном примере нечитабельно?
В данном и конкретном все понятно. (Если речь о том, что в первом посте)
Я в смысле применения к выражениям,
Цитата
a = b++ * 2 + b;

на что IAR выдает
Цитата
Warning[Pa081]: undefined behavior: the order of read and modification of variable "b" (declared 1at line 72) (or a value reached by some form of indirection through it) is undefined in this statement main.c 79
Оттранслировалось ли ЭТО в код не проверял.
Может кто более удачный пример "эффективного кода" приведет, не выдающего warning, error, но нечитабельного.



Go to the top of the page
 
+Quote Post
aiwa
сообщение Jun 15 2018, 20:17
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 301
Регистрация: 13-12-15
Из: Харьков
Пользователь №: 89 682



Цитата(k155la3 @ Jun 15 2018, 17:11) *
В данном и конкретном все понятно. (Если речь о том, что в первом посте)

Может кто более удачный пример "эффективного кода" приведет, не выдающего warning, error, но нечитабельного.


Неоднозначность результата компилирования и читабельность кода - суть вещи разные.
Приведенный Вами пример (a = b++ * 2 + b;) очень даже читабельный, хотя и неоднозначный.
Go to the top of the page
 
+Quote Post
Forger
сообщение Jun 15 2018, 20:21
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(aiwa @ Jun 15 2018, 23:17) *
пример (a = b++ * 2 + b;) очень даже читабельный,

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


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Jenya7   Вопрос(ы) по коду   Jun 14 2018, 14:12
- - gosha-z   Цитата(Jenya7 @ Jun 14 2018, 17:12) Я тут...   Jun 14 2018, 14:14
|- - Jenya7   Цитата(gosha-z @ Jun 14 2018, 19:14)...   Jun 14 2018, 14:25
|- - gosha-z   Цитата(Jenya7 @ Jun 14 2018, 17:25) я пон...   Jun 14 2018, 14:49
- - Jenya7   еще такой вопрос в aaa.h файле определено Код#if...   Jun 14 2018, 14:55
|- - gosha-z   Цитата(Jenya7 @ Jun 14 2018, 17:55) еще т...   Jun 14 2018, 15:00
|- - Jenya7   Цитата(gosha-z @ Jun 14 2018, 20:00)...   Jun 14 2018, 15:10
|- - k155la3   Цитата(Jenya7 @ Jun 14 2018, 18:10) а мож...   Jun 14 2018, 16:10
|- - aiwa   Цитата(Jenya7 @ Jun 14 2018, 18:10) а мож...   Jun 15 2018, 09:31
- - Forger   Цитата(Jenya7 @ Jun 14 2018, 17:12) Я тут...   Jun 14 2018, 18:11
|- - Jenya7   Цитата(Forger @ Jun 15 2018, 00:11) См. п...   Jun 14 2018, 18:21
||- - Forger   Цитата(Jenya7 @ Jun 14 2018, 21:21) это н...   Jun 14 2018, 18:24
|- - ViKo   Цитата(Forger @ Jun 14 2018, 21:11) Это н...   Jun 14 2018, 19:05
||- - Forger   Цитата(ViKo @ Jun 14 2018, 22:05) Приорит...   Jun 14 2018, 19:12
||- - ViKo   Цитата(Forger @ Jun 14 2018, 22:12) Значи...   Jun 15 2018, 04:52
||- - Forger   Цитата(ViKo @ Jun 15 2018, 07:52) Посмотр...   Jun 15 2018, 05:01
||- - ViKo   Цитата(Forger @ Jun 15 2018, 08:01) Чтобы...   Jun 15 2018, 07:15
||- - Forger   Цитата(ViKo @ Jun 15 2018, 10:15) Для пос...   Jun 15 2018, 09:35
||- - Forger   Цитата(ViKo @ Jun 15 2018, 10:15) в станд...   Jun 15 2018, 10:16
||- - ViKo   Цитата(Forger @ Jun 15 2018, 13:16) Там и...   Jun 15 2018, 10:51
||- - Forger   Цитата(ViKo @ Jun 15 2018, 13:51) Я по вс...   Jun 15 2018, 10:58
||- - ViKo   Цитата(Forger @ Jun 15 2018, 13:58) Хотя,...   Jun 15 2018, 11:38
||- - Forger   Цитата(ViKo @ Jun 15 2018, 14:38) Но я им...   Jun 15 2018, 11:52
|- - k155la3   Цитата(Forger @ Jun 14 2018, 21:11) . . ....   Jun 15 2018, 07:06
- - gosha-z   Народ, вы чего? Там все однозначно безо всяких тол...   Jun 14 2018, 19:36
|- - Forger   Цитата(gosha-z @ Jun 14 2018, 22:36)...   Jun 14 2018, 19:42
- - k155la3   ? z1 = ++ms[10] - синтаксис оператора для двух пр...   Jun 15 2018, 07:30
- - ViKo   Из Шилдта ЦитатаOrder of Evaluation C does not spe...   Jun 15 2018, 09:53
- - Herz   Автор! В этом разделе 99% вопросов "по к...   Jun 15 2018, 10:42
- - Forger   Цитата(k155la3 @ Jun 15 2018, 17:11) Може...   Jun 15 2018, 14:35
- - aiwa   Цитата(Forger @ Jun 15 2018, 23:21) Неясн...   Jun 15 2018, 21:44
- - Forger   Цитата(aiwa @ Jun 16 2018, 00:44) ...да, ...   Jun 15 2018, 21:55


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 17:25
Рейтинг@Mail.ru


Страница сгенерированна за 0.01642 секунд с 7
ELECTRONIX ©2004-2016