Перейти к содержанию
    

Преобразование знаковых типов

2 hours ago, Bpovov said:

Вот такая штука к примеру, в кейле даже на кортекс М работает верно, без залезания в асм

int A, B;

long C;

А = B*C;  при условии что результат и значения операндов не вылезают за int

 

Стоит ещё посмотреть limits.h. А в нем не окажется ли, что INT_MAX==LONG_MAX и в 32 бита? (sizeof(int) <= sizeof(long)).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У Cortex int размер имеет 32 бита, а у AVR int размер 16 бит.

Используйте stdint.h и типы uint8_t, int8_t, uint16_t, int16_t и т.д. и ваш код станет более переносимым.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

21.11.2020 в 18:49, dimka76 сказал:

У Cortex int размер имеет 32 бита, а у AVR int размер 16 бит.

Все верно, но long по длине также больше int, как и в AVR.

21.11.2020 в 18:49, dimka76 сказал:

Используйте stdint.h и типы uint8_t, int8_t, uint16_t, int16_t и т.д. и ваш код станет более переносимым.

Дело не в переносимости, она в моем случае не нужна.

21.11.2020 в 18:10, mdmitry сказал:

Стоит ещё посмотреть limits.h. А в нем не окажется ли, что INT_MAX==LONG_MAX и в 32 бита? (sizeof(int) <= sizeof(long)).

Я смотрел ассемблер этих выражений, там все четко.

Изменено пользователем Bpovov

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 минут назад, Bpovov сказал:

Все верно, но long по длине также больше int, как и в AVR.

у ARM long - 4 байта, int - 4 байта. Где "больше"?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...