我有以下代码。警告:整型常量对于“long”类型来说太大
uint32_t reg_val = 0;
uint64_t val = 0;
reg_val = 0;
reg_val = ((val & 0xffffff000000) >> 24);
dev_write(rw,reg_val);
编译器给出了说
warning: integer constant is too large for "long" type
我只分配24位reg_val这是定义为大小32位的无符号整数警告。
为什么编译器会生成此警告?
屏蔽掉低位24位的目的是什么?右对齐右值之前的位置,使得低位24位被删除?在我看来,它是没有真正目的的冗余代码。 – enhzflep
它可以避免在* upper *位有任何东西,我想。 – greggo
我隐约回忆起你需要在文字上附加“LL”来让编译器感到高兴。 –