在函数内定义的变量只在本函数范围内有效,为什么是对?

问题描述:

在函数内定义的变量只在本函数范围内有效,为什么是对?
在函数内的复合语句中定义的变量在本函数范围内有效,为什么是错

只在函数内的复合语句中有效
比如
void fun(int n){
int a=3;
printf("%d",a);///输出3
{int a=5;
printf("%d",a);///输出5
}
}