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

 
 
> в чем отличие 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
ReAl
сообщение Feb 20 2013, 08:43
Сообщение #4


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(Misile_Inc @ Feb 20 2013, 10:22) *
Ибо в стандарте указано лишь соотношение long>= int >= char. Следовательно, размер long и char может совпадать.
Ещё там short в цепочке и ещё short не может быть короче 16 бит.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
Misile_Inc
сообщение Feb 20 2013, 09:18
Сообщение #5


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

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



Цитата(ReAl @ Feb 20 2013, 12:43) *
Ещё там short в цепочке и ещё short не может быть короче 16 бит.

"int and short be at least 16 bits and long be at least as long as int and not smaller than 32
bits" если быть точнее. Согласен, это я упустил. Главное, что char может быть много больше, чем программист себе изначально представляет.

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

Сообщений в этой теме
- Метценгерштейн   в чем отличие uint8_t от char?   Jan 18 2013, 11:14
- - 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 Текстовая версия Сейчас: 21st July 2025 - 18:21
Рейтинг@Mail.ru


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