编程预警:打埋伏在无符号整数中的危机
发布时间: 2012-09-02 21:00:34 作者: rapoo
编程预警:潜伏在无符号整数中的危机
最近几天在写代码的时候,一不小又掉进一个老相识的陷阱里,好生惨痛。曾经告诫过自己,曾经提示过别人,但还是防不胜防。看看代码样例吧。在最开始,我写了类似这样的一个for循环。
typedef unsigned int UINT;UINT i = 0;UINT myData[3];for (i = 0; i < 3; i++){myData[i] = i;…}
后来由于算法的需要,我觉得循环的方向需要调换一下,于是,想当然地就顺手改成下边的代码,结果就杯具了。
for (i = 2; i >= 0; i- -){myData[i] = i;…}
各位应该已经猜到杯具的结果是怎样的。悔不该自己欠手,非要很臭美地用一个无符号整数作循环变量。各位看官今后也要小心了,须知这无符号整数中潜伏着危机,特别是在作循环变量的时候,格外危险。