坑爹的uint32_t

首先看看下面这段程序:

uint32_t compare = 10;

for (uint32_t i = compare; i >= 0; --i) {

  

  

    ..........

  

}

这是一段比较危险的程序, 当 i的值变为 -1的时候,其实由于i是一个非负数整形,强制类型转换后,i又变为一个很大的数,

后果就是得不到自己想要的结果,甚至相差很远,以至于程序core掉,正确的做法是,在这种程序中尽量不要用uint32_t,

或者使用之前进行转换(转换成int32_t类型, 但是要注意范围)

通过测试,发现这个循环将成为一个死循环,太可怕了!!!

教训:对于含有unsigned int类型的要特别的注意加小心,防止递减到“小于”零,最好循环比较中不要这样用

posted on 2014-08-11 11:53  程序猿猿猿  阅读(2883)  评论(0编辑  收藏  举报

导航