帮我看一下这个编程题 我不明白为什么运行结构会是那样.#includevoid func();int n=1;int main (){static int a;int b = -10;cout

来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/18 01:42:26
帮我看一下这个编程题我不明白为什么运行结构会是那样.#includevoidfunc();intn=1;intmain(){staticinta;intb=-10;cout帮我看一下这个编程题我不明白

帮我看一下这个编程题 我不明白为什么运行结构会是那样.#includevoid func();int n=1;int main (){static int a;int b = -10;cout
帮我看一下这个编程题 我不明白为什么运行结构会是那样.
#include
void func();
int n=1;
int main ()
{
static int a;
int b = -10;
cout

帮我看一下这个编程题 我不明白为什么运行结构会是那样.#includevoid func();int n=1;int main (){static int a;int b = -10;cout
哪里不明白呀?
四个cout.
第一个之前:a=0,b=-10,n=1.这没什么不理解吧?
第二个之前:因为是在函数里,所以,a,b,n都先读函数里的,即:
a先为2,再加2,为4,b先为5,再加5,为10,没有定义n,全局变量里有为1,加12,为13.所以a=4,b=10,n=13;
第三个之前:a还是0,没变,第二步里变的a是func里的,不是main里的.
b同a一样,为-10,再加4,为-6.n因为在第二步里变了,所以在这里就是变后的值13.即:a=0,b=-6,n=13.
第四步之前:这里的a是函数里的,因为它是静态的,所以在第四步里的a继续第二步里的值,4,再加2为6,b不是静态的,所以b重新开始计算,先为5,再加5,为10.n是全局的,第三步时它为13,在这里继续为13,再加10,为23,函数里又加了12,为35.所以:a=6,b=10,c=35.