Например TDA7294

Форум РадиоКот • Просмотр темы - Вопросы по С/С++ (СИ)
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пн сен 29, 2025 00:55:49

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 7690 ]     ... , , , 381, , , ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт май 02, 2024 19:18:42 
Друг Кота

Карма: 67
Рейтинг сообщений: 1964
Зарегистрирован: Сб дек 18, 2021 19:25:32
Сообщений: 12867
Рейтинг сообщения: 0
упс


Последний раз редактировалось Martian Пт май 03, 2024 05:48:39, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт май 02, 2024 19:41:44 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 651
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2708
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Я сейчас вот такой код попробовал.
Код:
  volatile uint8_t a=0xFF;
  volatile uint16_t v=a<<8 | (uint8_t)1;

Результат 0xFF01.
Ворнинга нет. Компилятор IAR. Пробовал выбирать Stantard C, C89 и С++.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт май 02, 2024 21:12:44 
Собутыльник Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 430
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2539
Рейтинг сообщения: 4
Если прогуливать уроки физики в школе, то мир наполнится магией и волшебством :)
Точно так же, если не читать стандарты на язык программирования. Ключевые слова "Integer Promotions".


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт май 03, 2024 05:53:09 
Друг Кота

Карма: 67
Рейтинг сообщений: 1964
Зарегистрирован: Сб дек 18, 2021 19:25:32
Сообщений: 12867
Рейтинг сообщения: 0
Значит, OKF прав, а я - нет. Поставим ему плюсик...
И всё же, я предпочту явное приведение неявному. И кучу скобок. Возможно, ресурс клавиатуры при этом сокращается, но зато в разы меньше проявляется ошибок, чем когда писал в стиле "тут и ежу понятно". И я точно помню, что когда-то давно сталкивался с отсутствием расширяющегося приведения операндов при сдвиге. Увы, не смог вспомнить, где.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт май 03, 2024 11:38:13 
Друг Кота
Аватар пользователя

Карма: 62
Рейтинг сообщений: 885
Зарегистрирован: Вт апр 24, 2007 07:45:40
Сообщений: 6122
Откуда: Minsk
Рейтинг сообщения: 0
a << сb | c(d)

Давненько не писал на Си, а для МК - вообще никогда. Но заинтересовала эта конструкция. Следуя K & R, насколько я их помню, едино что приходит на ум - процедура c с парамеиром d . Но это, конечно, не так?

_________________
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт май 03, 2024 12:30:21 
Собутыльник Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 430
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2539
Рейтинг сообщения: 0
Это точно не процедура, в С тупо нет процедур, а есть функции. А c(d) может быть как вызовом функции, так и макросом или даже приведением типа. Всё зависит от того что есть c.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт май 03, 2024 12:55:05 
Сверлит текстолит когтями

Карма: 12
Рейтинг сообщений: 130
Зарегистрирован: Вт июн 07, 2011 08:03:18
Сообщений: 1264
Рейтинг сообщения: 0
Если прогуливать уроки физики в школе, то мир наполнится магией и волшебством :)
Точно так же, если не читать стандарты на язык программирования. Ключевые слова "Integer Promotions".

Да. Люблю волшебство.) Ну а беда в том что стандарт не определяет последовательность вычисления операндов:
Except where noted, evaluations of operands of individual operators and of subexpressions of individual expressions are unsequenced ... The value computations of the operands of an operator are sequenced before the value computation of the result of the operator. If a side effect on a memory location (4.4) is unsequenced relative to either another side effect on the same memory location or a value computation using the value of any object in the same memory location, and they are not potentially concurrent (4.7) , the behavior is undefined (ISO/IEC 14882:2017 разд. 4.6(17) стр. 14)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт май 03, 2024 18:31:24 
Собутыльник Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 430
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2539
Рейтинг сообщения: 0
Последовательность вычисления не может перепрыгнуть через приоритеты операций и не меняет разрядность вычислений. В выражениях без побочных эффектов непринципиальна.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт июн 07, 2024 08:38:20 
Друг Кота

Карма: 67
Рейтинг сообщений: 1964
Зарегистрирован: Сб дек 18, 2021 19:25:32
Сообщений: 12867
Рейтинг сообщения: 0
В примере к WCH RISC-V встретилась любопытная конструкция:
Код:
GPIO_WriteBit(GPIOD, GPIO_Pin_0, (i == 0) ? (i = Bit_SET) : (i = Bit_RESET));

Мне казалось, что аргументом функции должен стать результат одного из результатов тернарной операции, но это не так (да и он всегда истинен)
Тут тоже как-то хитро работает приоритетность?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт июн 07, 2024 12:06:27 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 651
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2708
Откуда: г. Чайковский
Рейтинг сообщения: 4
Медали: 1
Получил миской по аватаре (1)
Я крайне редко пользуюсь тернарным оператором. Боюсь ошибиться.
Но ведь он не просто выполняет одно из выражений , но и возвращает его результат.

Добавлено after 2 minutes 22 seconds:
Martian писал(а):
да и он всегда истинен)
кто?

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт июн 07, 2024 12:44:07 
Собутыльник Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 430
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2539
Рейтинг сообщения: 4
Третьим аргументом функции GPIO_WriteBit() будет значение выражения
Код:
(i == 0) ? (i = Bit_SET) : (i = Bit_RESET)
которое при каждом вызове будет менять своё значение с Bit_SET на Bit_RESET и наоборот. Так дрыганье ногой сделали. Пример в Compiler Explorer.

ЗЫ:
У меня в коде вот такая приколюха с тернарником есть
Код:
bool isKeyPressed() { return key_pressed ? key_pressed=false,true : false; }


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт июн 07, 2024 13:37:05 
Друг Кота

Карма: 67
Рейтинг сообщений: 1964
Зарегистрирован: Сб дек 18, 2021 19:25:32
Сообщений: 12867
Рейтинг сообщения: 0
тоже красиво )
я решил глянуть, как в ассемблере вышло и застрял за разбирательством "что такое риск-ви" :)

VladislavS писал(а):
будет менять своё значение с Bit_SET на Bit_RESET и наоборот. Пример в Compiler Explorer.
о как! я думал на такое, но отбросил, как не кажущееся логичным. VladislavS, спасибо!
А ведь это очень удобно...

Добавлено after 3 minutes 34 seconds:
кто?
результат присваивания i = x; По крайней мере,
если слегка ошибиться и написать if (i = x), то у меня было когда-то, что это принималось за истину, и даже где-то читал описание, что в данном случае условие всегда истинно. Ща проверю.

Добавлено after 3 minutes 41 second:
ага, здесь точно также, условие определяется итоговым значением переменной.
класс. ещё одно моё заблуждение...
Z_h_e, спасибо за вопрос.


Последний раз редактировалось Martian Пт июн 07, 2024 13:37:47, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт июн 07, 2024 13:37:10 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 651
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2708
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Так тернарный оператор возвращает фактический результат, а не булевый тип. То есть результатом i=x , будет x.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт июн 07, 2024 13:37:30 
Собутыльник Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 430
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2539
Рейтинг сообщения: 0
результат присваивания i = x; По крайней мере,
Оператор присваивания возвращает правое выражение. Это позволяет делать последовательные присваивания a=b=c;


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт июн 07, 2024 13:38:38 
Друг Кота

Карма: 67
Рейтинг сообщений: 1964
Зарегистрирован: Сб дек 18, 2021 19:25:32
Сообщений: 12867
Рейтинг сообщения: 0
да, теперь понял.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт июн 07, 2024 13:59:36 
Друг Кота
Аватар пользователя

Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21
Сообщений: 19837
Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
если слегка ошибиться и написать if (i = x), то у меня было когда-то, что это принималось за истину, и даже где-то читал описание, что в данном случае условие всегда истинно.

На Хабре недавно была статья, что почти все компиляторы стали выдавать предупреждение на присваивание в условии.

_________________
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Измерить нннада?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт июн 07, 2024 14:01:20 
Друг Кота

Карма: 67
Рейтинг сообщений: 1964
Зарегистрирован: Сб дек 18, 2021 19:25:32
Сообщений: 12867
Рейтинг сообщения: 0
Да, те, которыми сейчас пользуюсь, все выдают. А давно когда-то пару раз уходило достаточно много времени на поиск такой опечатки...


Вернуться наверх
 
В сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт июн 07, 2024 14:23:20 
Друг Кота
Аватар пользователя

Карма: 31
Рейтинг сообщений: 829
Зарегистрирован: Пт сен 10, 2021 15:19:36
Сообщений: 5761
Откуда: Протвино
Рейтинг сообщения: 0
==,!= вообще декоративные при том что - определен для всего что обычно сравнивают с их помощью


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт июн 07, 2024 20:01:58 
Встал на лапы

Зарегистрирован: Вс окт 11, 2009 09:54:59
Сообщений: 131
Откуда: Пенза
Рейтинг сообщения: 0
Всем доброго :)
Подскажите по масками, точнее как записать в порт, в младшие байты, не изменив старших.??
Временная переменная tempo
Переменная с данными Х
Код:
tempo=( (X>>4) & 0x0F);
PORT |=tempo;
..
...
tempo= (X & 0x0F);
PORT |=tempo;
...
...


В итоге собственно ничегошеньки не получается. (применяется для инициализации и записи в жки).
Не работает ни в протеус'е, ни на макете.
При прямой записи вида
Код:
PORT =((X>>4) & 0x0F)

Всё работает

_________________
Интересная,однако,штука


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт июн 07, 2024 22:52:10 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2119
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18406
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Очень удобно: написать код, которому отдельный толмач нужен. Видимо, про веревку для выстрела в ногу нынче читать не модно... Перед функцией написать x = ! x и потом передать х в функцию (т.е. написать так, что даже умственно неполноценный разберется) - это не куто...

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

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

Мой уютный бложик... заходите!


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 7690 ]     ... , , , 381, , , ,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y