这书上不是已经说的很清楚了,你是哪句话看不懂,还是哪个字不认识?
main方法中定义了一个x=1
,在块{}
中也定义了一个x=2
,块{}
中的x只在块{}
中生效,在外面不生效,举个例子,如果在块{}
中定义一个z
,那么下面的用法会报错,因为在main方法中,会忽略块{}
中所定义的变量,所以在main中会因为找不到z
变量而报错
main() {
{
int z = 0;
}
cout<<z<<;
}
回到题目中,main调用f(x)
同理f(1)
,那么输出的a
自然就是1
因为a的值就是函数f的参数的值,f函数的参数的值就是main函数里面全局变量x等于1的值,所以最后a的值等于1
因为int X=2用大括号括起来了,f (x),走的是X=1.那一行代码。