搜索
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 为什么结果不是8而是9
标题:
为什么结果不是8而是9
只看楼主
liufan36
等 级:
新手上路
帖 子: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
来 自:神界
等 级:
版主
威 望:
422
帖 子:13681
专家分:53296
注 册:2012-10-18
第
2
楼
得分:0
又见
DO IT YOURSELF !
2014-03-17 09:05
so_love
等 级:
蒙面侠
威 望:
7
帖 子:812
专家分:4151
注 册:2013-11-25
第
3
楼
得分:0
....看不出来怎么等于8 ?
一花一世界、一叶一追寻、片片花叶落、情系何人身。
2014-03-17 09:34
ljx小子
来 自:星星
等 级:
蝙蝠侠
威 望:
2
帖 子:222
专家分:916
注 册:2013-10-7
第
4
楼
得分:0
static int a=1;
这是静态变量,所谓的静态变量就是它的值是当退出这个函数时仍旧保存,不会再重新被定义
。。。。。。。。。。。
2014-03-17 11:15
何时是月明
等 级:
论坛游民
帖 子:30
专家分:76
注 册:2011-9-27
第
5
楼
得分:0
首先 当第一次调用函数的时候 s=f(a) ;s = 4;当第二次调用的时候,由于a为static所以a的值被保存,所以第二次调用时a =2,所以求和为9
2014-03-17 11:36
suiyuemanbu
等 级:
新手上路
帖 子:4
专家分:0
注 册:2014-3-17
第
6
楼
得分:0
static int a=1; 静态变量会记忆上一次的值
搞定了指针,你就搞定了C
2014-03-17 13:56
w23643
等 级:
新手上路
帖 子:1
专家分:0
注 册:2014-3-17
第
7
楼
得分:0
static静态常量在程序运行期间都存在,即使是函数调用结束,所以结果为9而不是8
学好指针,走遍天下都不怕
2014-03-17 17:17
loveClangage
来 自:广东云浮
等 级:
蝙蝠侠
帖 子:326
专家分:891
注 册:2013-8-23
第
8
楼
得分:0
没有认真看书吗…
编写的程序,不能改变世界,却可以改变自己...
2014-03-17 17:48
一恒
等 级:
新手上路
帖 子:7
专家分:3
注 册:2014-3-18
第
9
楼
得分: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
等 级:
新手上路
帖 子:2
专家分:0
注 册:2014-3-19
第
10
楼
得分:0
a被定义为静态变量,static,在调用完f(n)函数后,a的值保留,下一次用的时候为上一次结束f(n)时候的值
2014-03-19 18:48
11
1/2页
1
2
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-428624-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.448829 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved