Главная Friday, March 24 2017  
ГлавнаяКонтактыАдминистрированиеПрограммированиеСсылки
UK-flag-ico.png English Version
GERMAN-flag-ico.png Die deutsche Version
лента новостей сайта microsin.ru лента новостей
map.gif карта сайта
нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

Поделиться:
Кто он-лайн
Сейчас на сайте:
Гостей - 9
Модуль рекламы
Поисковые системы

IAR EWB AVR: warning: integer overflow in expression Версия для печати
Написал microsin   
19.02.2010

Такое предупреждение компилятор может выдавать в том случае, если явно не указан тип константы.

По умолчанию компилятор предполагает, что простые константы без указания типа имеют тип signed int (целое со знаком). Тогда, например, следующий код будет выдавать предупреждение "integer overflow in expression" (и не будет всегда работать как ожидалось):

u16 days;
u32 seconds;
..
days = seconds / (60*60*24);

Здесь u16 и u32 - целые беззнаковые типы разрядности 16 и 32 бита соответственно. Чтобы выправить код, достаточно в конце константы добавить модификатор LU, явно указывающий тип:

days = seconds / (60*60*24LU);

Последнее обновление ( 19.02.2010 )
 

Добавить комментарий

:D:lol::-);-)8):-|:-*:oops::sad::cry::o:-?:-x:eek::zzz:P:roll::sigh:

Защитный код
Обновить

< Пред.   След. >

Top of Page
 
microsin © 2017