|
|
  |
Эквивалентность типов |
|
|
|
Nov 29 2014, 07:54
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
Цитата(Sergey-Ufa @ Nov 29 2014, 08:28)  Эквивалентен ли тип _int8 типу char. а тип _int32 типу long int? Никак нет. _int8, _int32 это нестандартные типы, которые каждый волен объявить как угодно. char стандартный, и может быть размером 8 бит или более (в некоторых реальных компиляторах он 16-битный). long int - тоже стандартный - минимум 32 бита, нередко реально 64-битный, встречал еще 40-битый. Если брать стандарт 2011, то char эквивалентен int_least8_t, а long int - int_least32_t (и то не уверен, вспоминая 40-битные DSP-шные лонги, а int_least32 там вроде и есть 32)
|
|
|
|
|
Nov 29 2014, 18:35
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
А это зависит от того, какой у вас процессор. На 32-разрядном ARM-е, например, signed int будет иметь ширину 32 бита. И для того, чтобы программисты так не мучились, в языке Си есть стандартный заголовочный файл stdint.h. С ним всё будет просто и однозначно: Код #include <stdint.h> typedef int32_t _int32; typedef int16_t _int16; typedef int8_t _int8;
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Nov 29 2014, 18:48
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(Sergey-Ufa @ Nov 29 2014, 19:31)  Но будет ли эквивалентна такая замена для выполнения кода? Вопрос, собственно, был именно об этом. Скажем так: работать это будет. В случае AVR это будет, скорее всего, оптимально и по быстродействию, и по объему кода. Если вы возьмете более другой процессор - надо будет детально вникать в код. Возможно более "длинный" тип будет работать быстрее или операции с ним будут занимать меньше памяти кода. Цитата(AHTOXA @ Nov 29 2014, 20:35)  С ним всё будет просто и однозначно Пока вы не дочитатете до определений типов uint_fastXX_t и uint_leastXX_t
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|