#include<iostream>
using namespace std;
int i=10;
int main()
{
int i=20;
cout<<i<<" "<<::i;
{
int i=30; //from here
cout<<endl<<i<<" "<<::i;
}
cout<<endl<<i<<" "<<::i<<endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
20 10
30 10
20 10
Run Code Online (Sandbox Code Playgroud)
在这里,我无法理解输出中'i'的最后一个值,为什么它不是30而不是30.
请看这里的评论,如果我替换int i = 30; 用I = 30; .
现在的输出是:
20 10
30 10
30 10
Run Code Online (Sandbox Code Playgroud)
为什么这里"i"的最后一个输出值相对于上面的代码而改变了.
最后一个最重要的问题是什么是使用块的应用?
您i
在此程序中调用了三个不同的变量:
main
,和main
.在块中,当您引用时i
,您将获得该块中定义的局部变量.在块之外 - 包括它之后 - 块中的变量是不可见的,因此当您引用时,i
您将获得main
自身定义的变量.并且在所有情况下,都::i
指的是全局变量.
当您更改int i=30
到i=30
该块,你不再创建块中的一个新变量; 相反,您正在修改i
在顶部定义的变量,该变量main
与块结束后的输出语句所看到的变量相同.