在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;
展开
 我来答
春误双卿
推荐于2017-11-23 · TA获得超过725个赞
知道小有建树答主
回答量:580
采纳率:91%
帮助的人:455万
展开全部

你的意思是这样么

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循环的局部变量,循环结束了就被释放了
hc...8@sina.com
2016-12-24 · 超过35用户采纳过TA的回答
知道答主
回答量:122
采纳率:100%
帮助的人:38.4万
展开全部
这是由于VC++和标准不一致造成的,我们来考察程序中那个for语句中的i的作用域,按照标准,在for的初始化部分声明的变量作用域应该在for中,而VC++把这个变量的作用域扩展到for所在的层次,就是说在for之后也是可以使用的,那么按照去掉大括号的程序,i的作用域是从声明之处到switch的大括号结束。而default标签跳过了i的声明语句却在i的作用域之中,这显然是有问题的。之所以加上大括号是正确的,是因为大括号改变了i的作用域按照标准,这段代码的错误是main函数的类型是int,其他没错。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hokagexu
2016-12-24 · TA获得超过260个赞
知道答主
回答量:81
采纳率:0%
帮助的人:53.6万
展开全部
int i;
for (i = 0 ; i < 10; i++) {
    int j = 0;
    j++;
}
int j = 2;

如上例子,在循环外声明的i,在循环里面做的操作,包括初始化、赋值等,都会改变i的值;

循环体内部定义的j,在循环结束时就释放了,所以在后面还可以定义int j=2,而不会报错

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式