关于#c语言#的问题:静态变量static

静态变量static,在这个代码里面作用是什么?最后答案为10 12 14,怎么来的?我很是疑惑

img

主函数 循环 三次 :

  • 第一次 :i = 0, 打印 fun() , y = 1, z = 4, z++后,z = 5; ++y 后,y = 2, 返回 y*z = 2 * 5 = 10; 注意这里 z 是static ,也就是静态变量 ,fun函数结束后,z 不回收,一直存在,所以fun函数运行结束后 z = 5;
  • 第二次 : i= 1, 打印 fun(), y = 1, z = 5, z++后,z = 6, ++y 后,y = 2, 返回 y*z = 2 * 6 = 12;
  • 第三次 : i= 2, 打印 fun(), y = 1, z = 6, z++后,z = 7, ++y 后,y = 2, 返回 y*z = 2 * 7 = 14;
  • 最终打印 10 12 14

以下答案引用自GPT-3大模型,请合理使用:

静态变量static是指只分配一次存储空间,存储空间的值在下次调用前不会自动清空,值会一直保留(也就是永久保存)。

下面的代码中,static变量a、b、c的作用是每次调用函数add()时,它们的值并不会被重新赋予123,而是由上次add()调用的结果所累加,也就是说,每次调用后它们的值都会依次是:1, 3, 6, 10, 15…

代码如下: 

int add(){
    static int a = 1;​
    static int b = 2;
    static int c = 3;
    a += a;
    b += a;
    c += b;
    return c;
}

因此最后答案为101214,表示调用了add()三次,返回值分别为101214

如果我的回答解决了您的问题,请采纳我的回答