static 在循环中的作用

来源:互联网 发布:手机验钞机软件新版 编辑:程序博客网 时间:2024/06/04 19:45
#include<stdio.h>int Square(int i){return i*i;}int main(){int i = 0;i = Square(i);for(;i<3;i++){static int i = 1;i+=Square(i);printf("%d,",i);}printf("%d\n",i);return 0;}

上述代码的运行结果为 2,6,42,3

下面我们来分析这个程序的运行结果,static  关键字所声明的i作用范围为

static int i = 1;i+=Square(i);printf("%d,",i);
这三句 不妨将for循环里面用j来代替这个i,与全局变量i区分开来

当 i=0 时 j=1 j+=Square(j) 的值为 1+1          打印输出 2

当 i=1 时 j=2 j+=Square(j) 的值为 2+4          打印输出 6

当 i=2 时 j=1 j+=Square(j) 的值为 6+36       打印输出 42

当 i=3 时 跳出循环 此时 i = 3                          打印输出3

0 0