中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > 综合其它
静态变量应用实例一处疑难解决过程
作者:未知 时间:2005-07-27 23:31 出处:CSDN 责编:chinaitpower
              摘要:静态变量应用实例一处疑难解决过程


#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的情况。
*********************************************************************

感谢 快乐鹦鹉 的帮忙。


关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有