【发布时间】:2013-08-06 13:11:30
【问题描述】:
我正在使用 RVCT 编译器在 C 中编译此代码(此处的相关部分):
static void Test (void)
{
unsigned long regVal;
regVal |= (UINT32)( (0x1 << 31) |
(0x1 << 26) |
0x3E);
}
编译代码时,我收到以下警告警告: " #61-D: 整数运算结果超出范围"。
我想了解如何更改以避免警告。
提前感谢您!
【问题讨论】:
-
您应该考虑先初始化
regVal或仅使用=运算符而不是|=运算符来分配它。 -
@patrickvacek 虽然这当然是一个有效的观点,但我认为这不是这个问题的重点。
-
我不熟悉那个编译器,但通常,该变量将采用随机值,它不会被初始化为 0。将您的 |= 更改为 = 以避免。
-
@DrewMcGowen,我知道,这就是为什么它是评论而不是答案。它的目的是提供友好的建议。