int a=3;是全局变量int a=5;是局部变量C语言允许全局和局部变量同名,但不提倡这么做同名且同时有效时,程序取作用域最近的一个。所以main函数中 int a=3; int a=5 都有效,取作用域最近的a=5;并把5传给函数f但是函数f中使用的是全局 int a=3,对main没有影响所以最后打印的是a=5