这段代码的平方是怎么来的
#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;
} 这代码不是差了 Cavulate函数吗 static int iSum = 3; // 由于是 static 所以第一次运行Caculate()函数时,这里是3, 然后iSum = iTemp*3; 使得iSum=9, 再次运行Caculate() iSum是不会清空的,他还是9 本帖最后由 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 的立方就是这么来的。 1.静态变量的生存期你要知道。
2.要有返回值,不然计算没用。
页:
[1]