|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
C++论坛
→
『 C++教室 』
→ c++问题
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
556
人关注过本帖
标题:
c++问题
只看楼主
加入收藏
wukaiye
等 级:
新手上路
帖 子:2
专家分:0
注 册:2012-8-12
结帖率:
0
楼主
收藏
已结贴
√
问题点数:20 回复次数:4
c++问题
以下程序的运行结果是
int main()
{ int k=4,m=1,p;
p=func(k,m);
cout<<p<<endl;
p=func(k,m);
cout<<p<<endl;
}
func(int a,int b)
{ static int m,i=2;
i+=m+1;
m=i+a+b;
return(m);
}
A.
8,17
B.
8,16
C.
8,20
D.
8,8
为什么这道题的正确答案是A,求高人指点
2012-10-03 10:25
举报帖子
使用道具
赠送鲜花
寒风中的细雨
等 级:
贵宾
威 望:
66
帖 子:1710
专家分:8645
注 册:2009-9-15
第
2
楼
收藏
得分:5
试着编译 运行
再不行就调试单步执行
2012-10-03 12:54
举报帖子
使用道具
赠送鲜花
zhaojigao
等 级:
论坛游民
威 望:
1
帖 子:19
专家分:59
注 册:2012-9-6
第
3
楼
收藏
得分:5
首先 static 变量在建立是就默认初始化为 0 所以在func函数第一次调用中 第一条语句 i+=m+1; 之后i=3,m=0;m=i+a+b;之后 m等于8 而且由于m。i是静态变量在函数退出时不退出 所以在第二次调用func函数的时候 m的初始值为 8 i为3; i+=m+1;之后 i为12 m为8
m=i+a+b;之后m为17 返回的就是17了 所以就是A啊
# include <iostream>
using namespace std;
func(int a,int b)
{
static int m,i=2;
cout<<m<<endl;
i+=m+1;
cout<<i<<"
"<<m<<endl;
m=i+a+b;
return m;
}
int main()
{
int k=4,m=1,p;
p=func(k,m);
cout<<p<<endl;
p=func(k,m);
cout<<p<<endl;
return 0;
}
2012-10-03 15:53
举报帖子
使用道具
赠送鲜花
额外覆盖
等 级:
城市猎人
威 望:
6
帖 子:1726
专家分:5757
注 册:2012-9-22
第
4
楼
收藏
得分:5
受教了
我现在所学的一切都是为了游戏!!!为了游戏,加油!加油!努力!
2012-10-04 18:22
举报帖子
使用道具
赠送鲜花
jiangruixue
等 级:
新手上路
帖 子:6
专家分:5
注 册:2012-10-5
第
5
楼
收藏
得分:5
静态局部变量 m,i在数据段开辟了空间,当调用完fun()时栈消失,但是在数据段中的m,i的值仍然不会发生变化,所以在你再次调用fun()时,就会出现A中的结果。
2012-10-05 14:07
举报帖子
使用道具
赠送鲜花
5
1/1页
1
快速回复:
c++问题
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.087501 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved