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