问题描述
第六行的int i = 0;在每轮循环均会执行,为什么能编译成功而不是提示重复定义?
问题解答
回答1:C++的变量作用域问题
#include <iostream>using namespace std;int main(int argc, char *argv[]) { int a = 3; int i = 3; {int i = 1; } cout << i << endl; // 3}回答2:
类似于全局变量和局部变量的概念。
一个变量只在“{}”中间起作用,出了这个大括号,这个变量就自动删除了。
回答3:编译器没有那么“笨”,它会知道你的意思是在循环中使用一个被初始化为0的变量。而上边a就不同了,编译器搞不清楚你为什么要把a定义两遍,很可能是误输入,所以会报错。

