| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 868 人关注过本帖
标题:为什么结果不是8而是9
只看楼主 加入收藏
liufan36
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-3-16
收藏
 问题点数:0 回复次数:10 
为什么结果不是8而是9
#include<stdio.h>
    int f(int n);
    main()
  { int a=3,s;   
    s=f(a);s=s+f(a);printf("%d\n",s);  }
    int f(int n)  
    { static int a=1;    n+=a++;    return n;  }
搜索更多相关主题的帖子: include return 
2014-03-17 07:39
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
又见

DO IT YOURSELF !
2014-03-17 09:05
so_love
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:7
帖 子:812
专家分:4151
注 册:2013-11-25
收藏
得分:0 
....看不出来怎么等于8 ?

一花一世界、一叶一追寻、片片花叶落、情系何人身。
2014-03-17 09:34
ljx小子
Rank: 8Rank: 8
来 自:星星
等 级:蝙蝠侠
威 望:2
帖 子:222
专家分:916
注 册:2013-10-7
收藏
得分:0 
static int a=1;

这是静态变量,所谓的静态变量就是它的值是当退出这个函数时仍旧保存,不会再重新被定义

。。。。。。。。。。。
2014-03-17 11:15
何时是月明
Rank: 2
等 级:论坛游民
帖 子:30
专家分:76
注 册:2011-9-27
收藏
得分:0 
首先 当第一次调用函数的时候 s=f(a) ;s = 4;当第二次调用的时候,由于a为static所以a的值被保存,所以第二次调用时a =2,所以求和为9
2014-03-17 11:36
suiyuemanbu
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-3-17
收藏
得分:0 
static int a=1; 静态变量会记忆上一次的值

搞定了指针,你就搞定了C
2014-03-17 13:56
w23643
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2014-3-17
收藏
得分:0 
static静态常量在程序运行期间都存在,即使是函数调用结束,所以结果为9而不是8

学好指针,走遍天下都不怕
2014-03-17 17:17
loveClangage
Rank: 8Rank: 8
来 自:广东云浮
等 级:蝙蝠侠
帖 子:326
专家分:891
注 册:2013-8-23
收藏
得分:0 
没有认真看书吗…

编写的程序,不能改变世界,却可以改变自己...
2014-03-17 17:48
一恒
Rank: 1
等 级:新手上路
帖 子:7
专家分:3
注 册:2014-3-18
收藏
得分:0 
1、s = f(3) = 3 + a++ = 3 + 1 = 4,内部a = 2,外部a = 3
2、s = s + f(3) = 4 + 3+ a++ = 4 + 3 + 2 = 9,内部a = 3,外部a = 3
2014-03-18 15:18
_green_hand
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2014-3-19
收藏
得分:0 
a被定义为静态变量,static,在调用完f(n)函数后,a的值保留,下一次用的时候为上一次结束f(n)时候的值
2014-03-19 18:48
快速回复:为什么结果不是8而是9
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.037912 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved