请问,把一个循环变量定义为unsigned有什么问题
下面的代码有什么问题?
unsigned i ;
for (i=9;i>=0;i--)
{
printf("%u\n",i);
}
请问,把一个循环变量定义为unsigned有什么问题
[解决办法]
unsigned 变量永远大于等于0
[解决办法]
我的编译器是VS2010,调试运行发现编译器讲unsigned默认为unsigned int,然后当i减为0时,再进行i--,i变为2^32 - 1 = 4294729695(在我的机器上int为4个字节)。因此,陷入死循环。你可以自己调试一下,很简单
[解决办法]
你可以写
unsigned i;for (i = 9; i-- != 0;){ printf("%u\n",i);}
[解决办法]
个人以为,写变量,必须把变量类型带上,不光是为了程序,也是为了你自己
[解决办法]
等于0时再减变成一个大数了。。
[解决办法]