1. 程式人生 > >位運算溢出錯誤

位運算溢出錯誤

強制 溢出 out 定義 強制類型轉換 常量 define 出錯 運算

在編寫測試程序的過程中,有如下定義:

#define UART1_EN (1<<31)

編譯後編譯器報錯:

integer operation result is out of range (61-D),經查資料是由於溢出所致,宏定義默認常量是有符號型,當左移31位時,常數就變成負數,編譯器就會給出如上的警告信息解決辦法是強制類型轉換成無符號類型:

#define UART1_EN ((U32)1<<31)

這樣,警告信息就消除了。

位運算溢出錯誤