为什么最后a输出等于1

img

这书上不是已经说的很清楚了,你是哪句话看不懂,还是哪个字不认识?

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.那一行代码。