在for循环外声明一个变量i,然后在for循环的括号中<不是花括号>初始化i
在for循环外声明一个变量i,然后在for循环的括号中<不是花括号>初始化i,然后在循环结束后打印i,这时这个i是for循环中初始化的数值吗?如果是,为什么,不是说循环结...
在for循环外声明一个变量i,然后在for循环的括号中<不是花括号>初始化i,然后在循环结束后打印i,这时这个i是for循环中初始化的数值吗?如果是,为什么,不是说循环结束后里面的数值都被释放了吗?
比如:
int i;
for(i=10;省略;省略){省略;}
cout《i; 展开
比如:
int i;
for(i=10;省略;省略){省略;}
cout《i; 展开
展开全部
你的意思是这样么
int i;
for(i=10;i<=20;i++)
{
......
}
printf("%d\n",i);
如果是这样,那么这个i的值就是for循环结束后的i 的值,上面的代码就是i=20。这个并不会被释
放,因为你是在上方声明的,相当于是全局变量,并不是for循环中的局部变量,不会被释放
如果是
for(int i=10;i<20;i++)
{
......
}
printf("%d\n",i);
这时候程序就会报错了,因为i相当于for循环的局部变量,循环结束了就被释放了
展开全部
这是由于VC++和标准不一致造成的,我们来考察程序中那个for语句中的i的作用域,按照标准,在for的初始化部分声明的变量作用域应该在for中,而VC++把这个变量的作用域扩展到for所在的层次,就是说在for之后也是可以使用的,那么按照去掉大括号的程序,i的作用域是从声明之处到switch的大括号结束。而default标签跳过了i的声明语句却在i的作用域之中,这显然是有问题的。之所以加上大括号是正确的,是因为大括号改变了i的作用域按照标准,这段代码的错误是main函数的类型是int,其他没错。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int i;
for (i = 0 ; i < 10; i++) {
int j = 0;
j++;
}
int j = 2;
如上例子,在循环外声明的i,在循环里面做的操作,包括初始化、赋值等,都会改变i的值;
循环体内部定义的j,在循环结束时就释放了,所以在后面还可以定义int j=2,而不会报错
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询