int i = 100,sum = 0;
for (i= 0; i != 10; ++i)
sum += i;
cout << i << " " << sum << endl;参考答案是 i = 100,解析式语句作用域i限制在for语句括号内,但是在VC++ 6.0中i = 10;
请高手指教一下
for (i= 0; i != 10; ++i)
sum += i;
cout << i << " " << sum << endl;参考答案是 i = 100,解析式语句作用域i限制在for语句括号内,但是在VC++ 6.0中i = 10;
请高手指教一下
解决方案 »
- 利用两个序列,唯一构造二叉树r
- 如何让CTabCtrl控件的某些标签不可用
- 请教使用CInternetSession如何获得网页内容??
- float f1=1/3 f1是多少? int n1=1/3 是多少? 怎么解释?
- 我用VC编了一个实时显示波形的程序,可是程序运行几分钟后,图形界面就不在原来的地方了?
- 获取进程完整路径名
- 用MSCOMM控件在单片机与pc机之间通讯的问题?
- 菜鸟一问:关于对话框重画!
- 怎样实现象《瑞星》一样的多语言切换?
- 主窗口得不到焦点(???)
- 一个非常困扰的问题,为什么创建2个定时器,第一个创建生效,第二个没生效!朋友工作10年,被这个问题难住了
- 请问MFC如何点击按钮弹出一个新窗口。
编译不通过的,i重定义
#include<iostream>
using namespace std;
int main()
{
int i=100,sum=0;
for(int i=0;i!=10;++i)
sum+=i;
cout<<i<<endl;
return 0;
}
如果没有int,上面几位的意思是在for循环里面就不存在局部变量i了,只是i重新赋值了,变为了0,等for循环结束,i就变成了10。
如果有int。编译不通过是因为编译器的差别吧。我用vs2008编译通过了,书上的意思是for循环里面的i是局部变量,语句的作用域紧限于for语句里面,而且for循环里面的i的赋值把for循环外面的i=100覆盖掉了。在for循环里面编译器只认i=0而不是i=100,当然,循环结束后i=10,但是输出是在for外面的,超出了for里面的i的语句作业域,所以输出的是外部的i,也就是100.
啰嗦了点,不晓得我表达明白没有。