首先看看下面这段程序:
uint32_t compare = 10;
for (uint32_t i = compare; i >= 0; --i) {
..........
}
这是一段比较危险的程序, 当 i的值变为 -1的时候,其实由于i是一个非负数整形,强制类型转换后,i又变为一个很大的数,
后果就是得不到自己想要的结果,甚至相差很远,以至于程序core掉,正确的做法是,在这种程序中尽量不要用uint32_t,
或者使用之前进行转换(转换成int32_t类型, 但是要注意范围)
通过测试,发现这个循环将成为一个死循环,太可怕了!!!
教训:对于含有unsigned int类型的要特别的注意加小心,防止递减到“小于”零,最好循环比较中不要这样用