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

 
 
> в чем отличие 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
Ответов
demiurg_spb
сообщение Jan 18 2013, 11:27
Сообщение #2


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



char по умолчанию знаковый тип, более того его размерность заранее не известна...
Насчёт знаковости я погорячился, она тоже может меняться от реализации...
Его единственное назначение - это строки и символы. Для всего остального есть stdint.h.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Misile_Inc
сообщение Feb 20 2013, 08:22
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 174
Регистрация: 30-08-11
Из: Санкт-Петербург
Пользователь №: 66 926



char по умолчанию не является ни знаковым, ни беззнаковым. Каким он будет, зависит от платформы. Это единственный тип, для которого наличие знака не определено стандартом. Сам попадал в неудобную ситуацию, когда char оказался знаковым.
Поэтому лучше всегда пользоваться типами с определенной размерностью stdint.h. Это избавит вас от проблем знаковости и некоторых проблем портируемости кода из-за разных размерностей типов на разных платформах. Мне попадался char = int = long размером 32 бит на одной из платформ.

Цитата(yes @ Jan 23 2013, 21:23) *
по поводу архитектур с нестандартными размерами long, short, char и т.п. там кроме этого еще много всего нестандартного. ну и арифметика с указателями - да, ес-сно в ней ошибки


Архитектур с нестандартными размерами long, short, char и т.п. мне еще не встречалось. Ибо в стандарте указано лишь соотношение long>= int >= char. Следовательно, размер long и char может совпадать.
Ошибки чаще всего не в компиляторах, а в программистах, которые не знают как средствами языка (например, stdint) пользоваться

Сообщение отредактировал Misile_Inc - Feb 20 2013, 08:32
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Метценгерштейн   в чем отличие uint8_t от char?   Jan 18 2013, 11:14
|- - 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
- - Genadi Zawidowski   Цитата(Метценгерштейн @ Jan 18 2013, 15:1...   Jan 18 2013, 23:49
|- - Xenia   Цитата(Genadi Zawidowski @ Jan 19 2013, 03...   Jan 19 2013, 01:22
|- - Сергей Борщ   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 Текстовая версия Сейчас: 22nd July 2025 - 09:03
Рейтинг@Mail.ru


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