Программирование AVR: решение проблем, FAQ IAR EWB AVR: warning: integer overflow in expression Sun, April 23 2017  

Поделиться

нашли опечатку?

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


IAR EWB AVR: warning: integer overflow in expression Печать
Добавил(а) microsin   

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

По умолчанию компилятор предполагает, что простые константы без указания типа имеют тип 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);

 

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


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

Top of Page