wz0526z 发表于 2019-11-6 17:46:11

这段代码的平方是怎么来的

#include<stdio.h>
void Caculate()
{
      static int iSum = 3;
      int iTemp;
      iTemp = iSum;
      iSum = iTemp*3;
      printf("%d\n",iSum);
}
int main()
{
      Caculate();    //得到iSum的平方
      Cavulate();   //得到iSum的立方
      return 0;
}

18084041536 发表于 2019-11-6 17:57:15

这代码不是差了 Cavulate函数吗

ba21 发表于 2019-11-6 18:05:13

static int iSum = 3; // 由于是 static 所以第一次运行Caculate()函数时,这里是3, 然后iSum = iTemp*3; 使得iSum=9, 再次运行Caculate() iSum是不会清空的,他还是9

jackz007 发表于 2019-11-6 18:26:51

本帖最后由 jackz007 于 2019-11-6 18:38 编辑

void Caculate()
{
      static int iSum = 3;
      int iTemp;
      iTemp = iSum;
      iSum = iTemp*3;
      局部静态变量就是在函数退出后,值会继续得到保留的局部变量。
      函数 Caculate() 定义了一个局部静态变量 iSum,并初始化为整数 3,第一次调用的时候,iSum = iSum * 3 = 3 ^ 2,第二次调用的时候,iSum = iSum * 3 = 3 ^ 2 * 3 = 3 ^ 3。
      所以,第一次调用结果是 3 的平方,第二次调用结果是 3 的立方就是这么来的。

lovedai 发表于 2019-11-9 21:59:13

1.静态变量的生存期你要知道。
2.要有返回值,不然计算没用。
页: [1]
查看完整版本: 这段代码的平方是怎么来的