{ }
里定义的变量仅能在这对 { }
里使用x
using namespace std;
int main() {
if (true) {
int x = 1;
cout << x;
}
cout << x; // 报错: x 未定义
return 0;
}
x
using namespace std;
int main() {
for (int i = 0; i < 10; i++) {
cout << i << " ";
}
cout << i ; // 报错: i 未定义
return 0;
}
{ }
里可以使用包含它的上层 { }
里定义的变量x
using namespace std;
int main() { // main 的作用域
int n = 1;
if (true) { // if 的作用域 (被 main 的作用域包含)
cout << n; // 输出 1
}
return 0;
}
{ }
里可以定义与包含它的上级作用域里定义的变量同名的变量x
using namespace std;
int main() { // main 的作用域
int n = 1;
if (true) { // if 的作用域 (被 main 的作用域包含)
int n = 2;
cout << n <<endl; // 输出 2
}
cout << n; // 输出 1 (此时 if 里的 “n” 的生命周期已经结束)
return 0;
}
x
using namespace std;
int max3(int x, int y, int z) {
int w = x;
if (y > w) w = y;
if (z > w) w = z;
return w;
}
int main() {
cout << x; // 报错: x 未定义
cout << y; // 报错: y 未定义
cout << z; // 报错: z 未定义
cout << w; // 报错: w 未定义
return 0;
}
x
using namespace std;
int s;
void sum(int n) { // 将 1+2+3+...+n 的值累加到全局变量 s 上
for (int i = 1; i <= n; i++) {
s += i; // 将全局变量 s 累加上 i
}
} // void 函数可以不写 return 语句 (void 是“空”的意思)
int main() {
s = 0; // 为全局变量 s 赋值 0
sum(10);
cout << s; // 输出 55
return 0;
}