#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的情况。
*********************************************************************
感谢 快乐鹦鹉 的帮忙。