请帮忙看一下这个程序有什么错误

来源:百度知道 编辑:UC知道 时间:2024/06/14 17:20:31
#include<stdio.h>
int a=2;
int f(int *a);
{return (*a)++;}
main()
{int s=0;
{int a=5;
s+=f(&a);}
s+=f(&a);
printf("%d\n",s);}
请问一下答案:7 是怎么算出来的?

先说7是怎么出来的。

{int a=5;
s+=f(&a);}

这里面的a与外面定义的全局变量不一样。这里面a=5,执行完后,这里面的a,局域变量,就释放了。并不改变外面的全局变量a 的值。执行完后s=5

往下走,
s+=f(&a);}
s+=f(&a);
下面这个a 是全局变量,值为2
所以最后s=5+2=7

程序里我不知道,你int a=5前面加个大括号有干嘛?能编译通过?

int f(int *a);要分号做什么?