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

 
 
> в чем отличие uint8_t от char?
Метценгерштейн
сообщение Jan 18 2013, 11:14
Сообщение #1


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

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



могу ли я всегда использовать uint8_t ? ведь оба беззнаковые и оба 8 бит.
и в программе вывода текста в UART uint8_t работает прекрасно.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Genadi Zawidowsk...
сообщение Jan 18 2013, 23:49
Сообщение #2


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

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Цитата(Метценгерштейн @ Jan 18 2013, 15:14) *
могу ли я всегда использовать uint8_t


Советую просто прочитать что стандарт говорит про это и посмотреть на то, что можно выиграть от uint_fast8_t, например (на проектах, переносимых между ARM и AVR).
Каждому из типов своё применение.
Go to the top of the page
 
+Quote Post
Xenia
сообщение Jan 19 2013, 01:22
Сообщение #3


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(Genadi Zawidowski @ Jan 19 2013, 03:49) *
... и посмотреть на то, что можно выиграть от uint_fast8_t, например (на проектах, переносимых между ARM и AVR).


Много тут не выиграешь, а скорее проиграешь.

Тип char крепко прижился в языке, т.к. на него все стринги завязаны, то бишь текстовые строки. Совсем обойтись без строковых сообщений сложно, а если их использовать, то окажется, что все строковые аргументы у библиотечных функций объявлены именно как char, а не иначе. Самим же написать что-то типа форматного printf'а слабО. А форматная печать (когда текст перемежается с цифирью) нужна бывает очень часто. А каждый раз сращивать такую строку из кусочков текста и чисел утомительно.

Конечно, буквам все равно где лежать, в char'ах или uint8_t'ах, однако строковые функции хотят только char, а всякий раз явно переопределять тип аргументов накладно.

Возможно из-за этого многие ... не пользуются ни тем, ни другим sm.gif, а выдумывают свои обозначения типов, отсутствующие в стандарте языка, которые с помощью дефайна (#define) определяют в заголовке программы должным образом. Чаще всего это типы:
i8, i16, i32
и их беззнаковые аналоги:
u8, u16, u32
Поэтому при переходах с одной архитектуры на другую, бывает достаточно только переопределить эти самодельные типы, не производя правку в алгоритмах. А то после того, как в некоторых архитектурах char стал двухбайтым, положиться стало не на что. И тут проявляет себя слабая сторона языка C/C++, когда типы переменных определены не строго, а в зависимости от архитектуры процессора. Эта особенность полезна, чтобы использовать язык, как кроссассемблер, но вредна, когда ставит работу алгоритмов в зависимость от этого.

Впрочем, проблему взаимодействия со стриговыми функциями этот метод не решает. Но если это C++, то всегда можно доопределить аналоги стринговых функций, с готовностью пожирающие аргументы типа i8 и u8 вместо char. На то полиморфизм и нужен. sm.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Метценгерштейн   в чем отличие uint8_t от char?   Jan 18 2013, 11:14
- - demiurg_spb   char по умолчанию знаковый тип, более того его раз...   Jan 18 2013, 11:27
|- - Misile_Inc   char по умолчанию не является ни знаковым, ни безз...   Feb 20 2013, 08:22
|- - ReAl   Цитата(Misile_Inc @ Feb 20 2013, 10:22) И...   Feb 20 2013, 08:43
|- - Misile_Inc   Цитата(ReAl @ Feb 20 2013, 12:43) Ещё там...   Feb 20 2013, 09:18
|- - Сергей Борщ   QUOTE (Xenia @ Jan 19 2013, 03:22) Много ...   Jan 19 2013, 11:31
- - Hamster1979   ИМХО - char всегда пишу если подразумевается строк...   Jan 23 2013, 05:30
|- - yes   у приличных людей строки это массивы wchar_t уже д...   Jan 23 2013, 10:19
|- - demiurg_spb   Цитата(yes @ Jan 23 2013, 14:19) например...   Jan 23 2013, 11:58
|- - yes   бывает и кроме win и авр-а программирование, не пр...   Jan 23 2013, 17:23
|- - demiurg_spb   Цитата(yes @ Jan 23 2013, 21:23) бывает и...   Jan 23 2013, 17:36
- - _Pasha   Самый рекордсмен по кривизне - это тип int Что до...   Jan 23 2013, 17:49
- - Сергей Борщ   Во, вчера нарвался в исходниках v-usb: CODEchar i;...   Jan 28 2013, 15:34
- - Lagman   можно этому верить? Статья на Хабре   Jan 31 2013, 15:05
- - _Pasha   ЦитатаОт типов вроде int16_t, со строгим указанием...   Jan 31 2013, 15:43


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

 


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


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