为何用移位处理长整数据会错误?
我读取SD卡的信息时想计下SD卡的容量,我用1G的内存卡,以MB作单位显示。扇区缓存用SDDATA;
unsigned long SD;
SD=(SDDATA*16777216+SDDATA*65536+SDDATA*256+SDDATA)/1024/2;
这样读取显示正常,值为942,即942MB。
而采用移位方法却不行,为何:
SD=((SDDATA<<24)|(SDDATA<<16)|(SDDATA<<8)|SDDATA)/1024/2;
结果是14,sizeof(SD)显示为4,是4字节呀,为何移位计算就不正确了呢?请高手帮解,小弟想不明白。谢谢!{:cry:} 在SDDATA到32之前加上强制类型转换(unsigned long),试试行不 dashashi 发表于 2013-1-23 00:56 static/image/common/back.gif
在SDDATA到32之前加上强制类型转换(unsigned long),试试行不
可以了谢谢!{:loveliness:}
页:
[1]