Официальный сайт компании Arduino по адресу arduino.cc
Вопрос
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Чт, 05/04/2012 - 14:16
Очень часто встречаю в примерах скетчей следующие строки:
uint8_t u8num = 0; uint32_t u32num = 0;
Пытался разобраться самостоятельно что-то и с чем это едят... но не смог, подскажите что это ... или посоветуйте чтиво какое ...
Спаисбо!
Вроде бы так - uint8_t - тип целого числа без знака длиной 8 бит т.е. все равно, что байт - byte, а uint32_t - тип целого числа без знака длиной 32 бит т.е. все равно, что 4 байта - unsigned long .
В интернете я прочел тоже самое, но все равно не понимаю ... а в каких случаях его необходимо приминять?
Где то на просторах нашел информацию, что если объявлен uint8_t, то в ОЗУ выделяется 1 байт... все верно?
Ага верно, но байт это 2^8=256 а если значение составляет 65536 или более?
да, то же самое происходит, когда объявляете byte
Если в коде критично важна разрядность целочисельных типов даных то вместо int, char, short и т.д лучше использовать такое определение.
int8_t, int_16, int_32, int_64 - как выше сказано 8,16,32,64 длина, могут принимать минус и плюс, приставка u (uint_8) - тоже только с плюсом.
Вообще "хорошым тоном" написания кода считаеться использование именно таких определений, а связано ето с возможной несовместимостю различных компиляторов и соответственно переноса програмного кода.
Из своего опыта: проблем в использовании одного и другого замечено не было.
Надо принять к сведению. А интересно uint1_t скомпилируется как boolean
Нет не компилирует, так вот интересно сколько памяти выделяется, когда обявляем boolean, по идей должен 1 бит.
int8_t | char | от -128 до 127
uint8_t | byte, unsigned char | от 0 до 255
int16_t | int | от -32768 до 32767
uint16_t | unsigned int, word | от 0 до 65535
int32_t | long | от -2147483648 до 2147483647
uint32_t | unsigned long | от 0 до 4294967295
и еще бывают int64_t и uint64_t
:) Cпс!
спасибо макс, теперь дощло
там где "u" это unsigned тоесть положительное число
Еще раз СПАСИБО ОГРОМНОЕ maksim.
Спасибо
Грамотрый развернутый ответ
Нет не компилирует, так вот интересно сколько памяти выделяется, когда обявляем boolean, по идей должен 1 бит.
Минимальный адресуемый объем памяти равен 1 байту. Соответственно, меньше выделить невозможно в принципе. Но никто не мешавет в своей программе использовать одно многобитное число как совокупность нескольких булевых признаков.
теоретически все верно.
Пожалуйста проверьте все типы практически
в ардуино например нет от -128 до 127
Отныне и вовеки веков int8_t в ардуине не применять!
Дима привет! А что случилось?
EuBeginer, шутка юмора такой. После прочтения последней строчки в #14.
теоретически все верно.
Пожалуйста проверьте все типы практически
в ардуино например нет от -128 до 127
Зато а С есть. Называется char.
Шутники :-)
в ардуино например нет от -128 до 127
я запретил char
я запретил char
А что вместо?
я запретил char
А я разрешил!
я запретил char
А я разрешил!
это невозможно - я не разрешал разрешать.
я запретил char
А что вместо?
рептилоиды
я запретил char
А я разрешил!
я не разрешал разрешать.
А я не разрешал запрещать!
Нет не компилирует, так вот интересно сколько памяти выделяется, когда обявляем boolean, по идей должен 1 бит.
Неправильная идея.
Минимально адресуемый объем памяти 1 байт, соответственно, и выделить менее одного байта невозможно. (в зависимости от менеджера памяти минимальная порция может быть и больше, напимер, 4 или 8 байт)
Доброго времени суток. Столкнулся с критикой компилятора. Не могу сообразить, что именно ему не нравится... и что он этим хочет мне обяснить. Как раз вопрос с типом данных. Если заменяю их на int то ругатся перестает.