平时学习一直认为for循环和while循环在使用上是差不多的,然后最近看博客了解到for循环在结束循环之后for循环的递增变量是不可用的。
原因是在for循环结束后,会销毁掉这一块内容,提高内存使用效率;但是while循环就不会。
然后就想着验证下。
for循环还好验证,但是while循环就不知道怎么验证了。因为我用的C,for循环可以for(int i;;)这样,但是while好像不能while(int i)这种格式。
就是因为while不能像for循环这样在循环条件中定义循环变量,才使得两者有这个区别。这个不需要验证,也没办法验证。
for循环中定义循环变量,这个循环变量编译器认为是for循环内的局部变量。这个在VC6下不是这样的,是VS.NET开始才这样的
你在前面定义好递增变量i,for循环结束后就不会销毁
void fun()
{
for(int i=0;i<100;i++)
{
//...
}
int i=0;
while(i<100)
{
//
}
}
常规情况下其实效率差不多,循环结束释放和返回时释放并没有多大区别。
但编译器好像对for有额外优化,我也记的不太清了。