Например TDA7294

Форум РадиоКот • Просмотр темы - Продолжение боёв по теме _Bool, void и всякой квантовой физике
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Вт июл 29, 2025 06:39:47

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


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



Начать новую тему Ответить на тему  [ Сообщений: 257 ]  1, , , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Продолжение боёв по теме _Bool, void и всякой квантовой физике
СообщениеДобавлено: Ср дек 14, 2016 20:38:39 
Друг Кота
Аватар пользователя

Карма: 27
Рейтинг сообщений: 33
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Сообщений: 6296
Откуда: Ukraine
Рейтинг сообщения: 0
есть некая переменная _Bool х;
можна ли, и если можно то как, ее инвертировать ?
тоесть 1-0-1-0-1-...........

_________________
Tell Me The Truth


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Ср дек 14, 2016 20:42:48 
Вымогатель припоя
Аватар пользователя

Карма: 7
Рейтинг сообщений: 58
Зарегистрирован: Чт янв 20, 2011 09:07:08
Сообщений: 674
Откуда: Пермь
Рейтинг сообщения: 0
х = !х
?

_________________
Никакая контра не уйдёт от нас


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Ср дек 14, 2016 20:43:55 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18403
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
на выбор:
x = !x;
x ^= 1;
x = ~x;

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Ср дек 14, 2016 20:49:34 
Собутыльник Кота
Аватар пользователя

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Ср дек 14, 2016 20:52:03 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1035
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4884
Откуда: Минск
Рейтинг сообщения: 1
Что-то вспомнилась старая шутка (не C, но скорее C#), которая в данном случае выглядела бы так:
Код:
if (x.toString().length() == 4) { // true
  x = false;
} else if (x.toString().length() == 5) { // false
  x = true;
} else {
  // something else;
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Ср дек 14, 2016 20:53:07 
Друг Кота
Аватар пользователя

Карма: 27
Рейтинг сообщений: 33
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Сообщений: 6296
Откуда: Ukraine
Рейтинг сообщения: 0
а почему при инициализации переменной компилятор проглатывает _Bool х=95;
но при последующем выводе на экран там 1 ?

_________________
Tell Me The Truth


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Ср дек 14, 2016 20:57:24 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1035
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4884
Откуда: Минск
Рейтинг сообщения: 0
Потому что _Bool это, наверное, char какой-нибудь на самом деле или другой целый тип.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Ср дек 14, 2016 21:48:46 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1430
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4568
Откуда: Планета Земля
Рейтинг сообщения: 2
Медали: 1
Получил миской по аватаре (1)
Потому, что всё, отличное от нуля - это true.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Ср дек 14, 2016 21:54:06 
Вымогатель припоя
Аватар пользователя

Карма: 19
Рейтинг сообщений: 230
Зарегистрирован: Чт окт 06, 2016 21:12:07
Сообщений: 606
Откуда: Южное Бутово
Рейтинг сообщения: 0
Дело не в том, в каком виде хранится.
Можете даже переопределить:
BOOL_TYPE_SIZE
A C expression for the size in bits of the C++ type bool and C99 type _Bool on the target machine. If you don't define this, and you probably shouldn't, the default is CHAR_TYPE_SIZE.

Просто в C при преобразовании типа в логический, ложь(false) есть 0 (ноль). А все, что не ноль - истина (1). То есть, компилятор просто преобразовал константу типа int в логическую.

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Чт дек 15, 2016 07:03:30 
Ум, честь и совесть. И скромность.
Аватар пользователя

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

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

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Чт дек 15, 2016 07:28:40 
Вымогатель припоя
Аватар пользователя

Карма: 19
Рейтинг сообщений: 230
Зарегистрирован: Чт окт 06, 2016 21:12:07
Сообщений: 606
Откуда: Южное Бутово
Рейтинг сообщения: 0
ARV писал(а):
нет в Си "логического" типа данных

В том то и дело, что в C99 есть - _Bool

При выключенной поддержке C99 выражение
Код:
bool a=95; puts(a);

выдаст 95, а не 1

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Чт дек 15, 2016 08:18:44 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18403
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
ptr128 писал(а):
В том то и дело, что в C99 есть - _Bool
педантичный вы наш, цитируйте корректно:
ARV писал(а):
не пользоваться "не родными" (по происхождению) типами. нет в Си "логического" типа данных
неужели не понятно, что изначально в Си даже не предполагалось такого типа, а _Bool в С99 - это либо костыль (подчеркивание в начале как бы намекает), либо дань моде (С++)...

ну и подчеркиваю: это моё личное мнение. я не претендую на славу Кернигана и Ричи, и даже Страуструпа

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Чт дек 15, 2016 08:36:16 
Вымогатель припоя
Аватар пользователя

Карма: 19
Рейтинг сообщений: 230
Зарегистрирован: Чт окт 06, 2016 21:12:07
Сообщений: 606
Откуда: Южное Бутово
Рейтинг сообщения: 0
Подчеркивание и заглавная B в _Bool как раз наоборот, сделаны из-за костылей bool (GCC) и _bool (VC) уже имеющихся к тому времени на уровне системных заголовочных файлов.
И покажите мне сейчас, через 16 лет после введения стандарта C99, компилятор, его не поддерживающий.
Так что есть в действующем стандарте C логические типы данных.

А что Вы подразумеваете под
ARV писал(а):
"не родными" (по происхождению) типами

мне не ведомо. Может речь вообще про ENIAC-овские типы данных :)))

Я же "родным" называю или описанное в действующем стандарте, либо реализуемое непосредственно компилятором. В зависимости от контекста.

Добавлено after 7 minutes 13 seconds:
Добавлю. С точки зрения большинства МК, использование логического типа данных часто не оправдано. Обычно, объем программной памяти МК намного больше, чем объем оперативной. Поэтому, нередко, имеет смысл размещать логические переменные в битах, экономя оперативную память за счет дополнительного расхода программной и незначительно меньшего быстродействия.
Это существенно, когда таких логических переменных десятки, да еще большинство из них глобальные.

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Чт дек 15, 2016 08:51:06 
Ум, честь и совесть. И скромность.
Аватар пользователя

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

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

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

итак, в чем мой принцип? вот основные его тезисы:
1. не умножай сущности без необходимости (см. _Bool)
2. упрощай записи, даже если это противоречит п.1 (не пиши в одной строке описание переменной сложного типа, вместо чего опиши один или несколько простых типов, и определи переменную в "два слова")
3. не пользуйся всеми возможностями синтаксиса, которые разрешены стандартом, ограничь себя наиболее нативно понятным набором ([]arr и arr[] - это по сути синонимы, но я никогда не пользуюсь первым вариантом)
4. не стремись к экономии строк (встречал пример, когда функция поиска подстроки в строке была реализована в виде оператора for с пустым телом, т.е. все внутри круглых скобок)

не смотря на некоторую противоречивость, это основное руководство в моих действиях, и я всем и всегда даю (если вообще даю) советы, остающиеся в описанных рамках.

из новшеств С99 (в варианте GNU C99) я использую типы с явным указанием размерности - intX_t (кстати, заодно я перенял окончание _t для вводимых пользователем типов). я пользуюсь Си только для МК, и явное указание размерности типов мне представляется безусловно полезным нововведением. проблемы, правда, возникают с параноидальным режимом компиляции, когда выводятся варнинги на несоответствие типов char и uint8_t, например... что ж, за все приходится платить...

так же безусловно полезным мне представляется возможность определения переменных по месту кода, т.е. локальными для блоков кода.
возможность использования записи "интервалов значений" для оператора switch - это тоже безусловное удобство (увы, я вышел из паскаля и подспудно тяготею к его подходам).
иногда радуюсь возможности описания массивов вычисляемой размерности: хоть и не часто, но это сильно помогает.
и еще я очень благодарен изобретателям анонимных структур и юнионов - очень удобно работать со сложными типами, требующими разного способа доступа к физическим данным.
вроде бы и все...

новшество вроде bool или _Bool не считаю чем-то реально полезным и не применяю.
вопросы совместимости меня не беспокоят.

надеюсь, если у вас хватило терпения прочесть мое "кредо", у вас теперь уменьшится желание наставлять меня на путь истинный... ну и корректировать мои сообщения на форуме - я неисправим...

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Чт дек 15, 2016 09:15:03 
Вымогатель припоя
Аватар пользователя

Карма: 7
Рейтинг сообщений: 58
Зарегистрирован: Чт янв 20, 2011 09:07:08
Сообщений: 674
Откуда: Пермь
Рейтинг сообщения: 0
Я ради эксперимента сейчас в своем проекте часиков поправил 4 флага типа uint8_t на _Bool - размер прошивки остался точно таким же.
Раз нет выигрыша, то и сущности плодить не надо. imho.

_________________
Никакая контра не уйдёт от нас


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Чт дек 15, 2016 11:12:45 
Вымогатель припоя
Аватар пользователя

Карма: 19
Рейтинг сообщений: 230
Зарегистрирован: Чт окт 06, 2016 21:12:07
Сообщений: 606
Откуда: Южное Бутово
Рейтинг сообщения: 0
prinv писал(а):
поправил 4 флага типа uint8_t на _Bool - размер прошивки остался точно таким же.
Раз нет выигрыша, то и сущности плодить не надо. imho.


Не удивительно. Я же писал выше:
ptr128 писал(а):
BOOL_TYPE_SIZE
A C expression for the size in bits of the C++ type bool and C99 type _Bool on the target machine. If you don't define this, and you probably shouldn't, the default is CHAR_TYPE_SIZE.


Раз Вы не переопределили BOOL_TYPE_SIZE, он и остался равным 8 (CHAR_TYPE_SIZE).

ARV писал(а):
новшество вроде bool или _Bool не считаю чем-то реально полезным и не применяю.

_Bool позволяет выделять под логическую переменную любое количество битов, хоть 1, хоть 8, хоть 64. IMHO, для МК польза от этого очевидна.

2 ARV: и не надо было писать такие опусы. Проблема была только в том, что из Вашей фразы:
ARV писал(а):
не смотря на все рекомендации стандартов, лично я рекомендую не пользоваться "не родными" (по происхождению) типами. нет в Си "логического" типа данных, есть только результаты логических выражений. и, как ни странно, эти результаты имеют целочисленный тип


Я лично понял, что вы утверждаете, что:
ARV писал(а):
нет в Си "логического" типа данных

и
ARV писал(а):
результаты логических выражений [...] имеют целочисленный тип


Что для стандарта C99 и позднее является ложными утверждениями.
А значит
ARV писал(а):
любому начинающему программисту или программисту-любителю, который пожизненно начинающий

Вы могли внедрить в голову неверную информацию.

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


Последний раз редактировалось ptr128 Чт дек 15, 2016 11:16:29, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Чт дек 15, 2016 11:13:35 
Друг Кота
Аватар пользователя

Карма: 27
Рейтинг сообщений: 33
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Сообщений: 6296
Откуда: Ukraine
Рейтинг сообщения: 0
в какой области памяти расположены фьюз биты ?
Изображение

_________________
Tell Me The Truth


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Чт дек 15, 2016 11:16:46 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2116
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18403
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
FreshMan писал(а):
в какой области памяти расположены фьюз биты ?
а вам зачем? ;)

картинка, похоже, из новомодных даташитов уже от микрочипа... про новинки не скажу, но в "настоящих" атмелах фьюзы из программы не прочесть, так что и знать о том, где они размещены, нет никакого смысла. где-то во flash...

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Чт дек 15, 2016 11:46:56 
Друг Кота
Аватар пользователя

Карма: 27
Рейтинг сообщений: 33
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Сообщений: 6296
Откуда: Ukraine
Рейтинг сообщения: 0
ARV писал(а):
а вам зачем?

да любопытство взыграло :))
регистры вижу, бутлоудер вижу .... а фьюзов не вижу :))

все как у класика

-видиш фьюзы ?
-нет
-и я не вижу, а ОНИ есть
:)))

_________________
Tell Me The Truth


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Нескольно простых вопросов о программировании AVR на Си.
СообщениеДобавлено: Чт дек 15, 2016 13:31:45 
Вымогатель припоя
Аватар пользователя

Карма: 7
Рейтинг сообщений: 58
Зарегистрирован: Чт янв 20, 2011 09:07:08
Сообщений: 674
Откуда: Пермь
Рейтинг сообщения: 0
ptr128 писал(а):
Раз Вы не переопределили BOOL_TYPE_SIZE, он и остался равным 8 (CHAR_TYPE_SIZE).


Ну хорошо, добавил в начало
Код:
#define BOOL_TYPE_SIZE   1


4 замены uint8_t на _Bool на размер прошивки не повлияли.
Как сделать _Bool однобитным?

_________________
Никакая контра не уйдёт от нас


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

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


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

Сейчас этот форум просматривают: Google [Bot], SfS и гости: 42


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

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


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