大家好,欢迎来到IT知识分享网。
for(i=0;i<GyroParaSectorSize;i+=2) /* i+=2 ==> 参数只需2个字节 */ { if((int16_t)0xffff == *((int16_t *)(GyroParaSectorAddr+i))) /* 校验是否可写*/ { break; } }
以上程序,i=GyroParaSectorSize跳出,即使Flash未写入,默认值为全F,也不能成立。因为编译器中0xFFFF是默认无符号数,但是后者却转换成有符号16进制数,因此后者0xffff在有符号数中表示-1,而前者在无符号中表示65535,因此无法满足条件。改进方法有三种,一是后者强制类型转换为无符号数,二是前者强制转换为有符号类型如(uint16_t)0xffff,三是,前者之间为-1。推荐使用第二种,比较清晰!
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/137899.html