【问题标题】:compiler warning on setting 32nd bit设置第 32 位时的编译器警告
【发布时间】:2013-02-28 15:55:22
【问题描述】:

我在设置第 32 位时在代码中出现编译器警告。代码有效,但这个警告让我很恼火。

编译器是 Keil C,处理器是 32 位 ARM。代码如下

PINSEL0 |= PINSEL_AD15;

其中PINSEL0是32位寄存器,定义为

#define PINSEL0         (*((volatile unsigned long *) 0xE002C000))

PINSEL_AD15 的定义如下:

#define PINSEL_AD15  ((1<<30)|(1<<31)) 

我收到的警告信息是:整数运算结果超出范围

【问题讨论】:

    标签: c 32-bit keil


    【解决方案1】:

    文字1 是一个有符号 整数,因此当您移动31 时,您将超出范围。尝试使用无符号整数:

    (1U << 31)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-16
      • 1970-01-01
      • 2011-05-09
      • 2012-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多