静态变量应用实例一处疑难解决过程

王朝other·作者佚名  2006-01-09
宽屏版  字体: |||超大  

#include <stdio.h>

void func1(void);

int main(void)

{

int count;

for(count = 0; count < 20; count++)

{

printf("At iteration %d:",count);

func1();

}

return 0;

}

void func1(void)

{

static int x = 0;

int y = 0;

printf("x=%d,y=%d\n",x++,y++);

}

编译运行后,结果是:

At iteration 0:x=0,y=0

At iteration 1:x=1,y=0

At iteration 2:x=2,y=0

At iteration 3:x=3,y=0

At iteration 4:x=4,y=0

At iteration 5:x=5,y=0

At iteration 6:x=6,y=0

At iteration 7:x=7,y=0

At iteration 8:x=8,y=0

At iteration 9:x=9,y=0

At iteration 10:x=10,y=0

At iteration 11:x=11,y=0

At iteration 12:x=12,y=0

At iteration 13:x=13,y=0

At iteration 14:x=14,y=0

At iteration 15:x=15,y=0

At iteration 16:x=16,y=0

At iteration 17:x=17,y=0

At iteration 18:x=18,y=0

At iteration 19:x=19,y=0

我一开始以为结果会全部是x = 1,y = 1

后来资料里说x是静态变量,所以每次执行func1函数时,x会用上一次的x的值,而y会每次被重新初始化,照这样的话,那结果应该是:

x每次加一,但y一直要等于1才对啊,因为每次执行func1函数时,y都被初始化成0,y++不就是1?为什么结果会是y每次为0?

*********************************************************************

回复人: happyparrot(快乐鹦鹉)

int y = 0;

printf("x=%d,y=%d\n",x++,y++);

--》y++的意思是先用y进行本次操作,操作完成后,y会增加1。所以相当于:

int y = 0;

printf("x=%d,y=%d\n",x,y);

x = x+1;

y = y+1;

你说的情况是++y的情况。

*********************************************************************

感谢 快乐鹦鹉 的帮忙。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有