社区
C++ 语言
帖子详情
都来解释这个结果吧,能学到一些。
ylc3895_cn
2005-03-17 04:55:31
#include<iostream.h>
void main(){
int i=12;
for(;i>0;i/=3)
{
cout<<i<<',';
static int i=6;
cout<<++i<<endl;
}
cout<<i<<endl;
cin.get();
}
输出结果:
12,7
4,8
1,9
0
大家解释解释吧。
...全文
245
17
打赏
收藏
都来解释这个结果吧,能学到一些。
#include void main(){ int i=12; for(;i>0;i/=3) { cout<<i<<','; static int i=6; cout<<++i<<endl; } cout<<i<<endl; cin.get(); } 输出结果: 12,7 4,8 1,9 0 大家解释解释吧。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lx1986
2005-03-18
打赏
举报
回复
它只执行3次呀
第一次i=12
第二次i=4
第三次i=1
知道了吗?
weigoal
2005-03-18
打赏
举报
回复
原来如此
cxyol
2005-03-18
打赏
举报
回复
mark
tttl366
2005-03-18
打赏
举报
回复
弱弱的问一句,为什么结果不是:
输出结果:
12,7
4,8
1,9
0,10
0
stonesstar
2005-03-18
打赏
举报
回复
顶楼上的
shine51151
2005-03-18
打赏
举报
回复
re: 楼上的兄弟 xialin168(林)
你首先要弄清楚以下几点:
(1)静态局部变量在函数内定义,但不象自动变量那样,当调用时就存在,退出函数时就消失。静态局部变量始终存在着,也就是说它的生存期为整个源程序。
(2)静态局部变量的生存期虽然为整个源程序,但是其作用域仍与自动变量相同,即只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。
(3)虽然离开定义静态局部变量的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用, 而且保存了前次被调用后留下的值。(所以再次调用i时它的值不恢复为6)
(4)静态局部变量属于静态存储类别,在静态存储区内分配存储单元。在程序整个运行期间都不释放。而自动变量(即动态局部变量)属于动态存储类别,占动态存储空间,函数调用结束后即释放。
(5)静态局部变量在编译时赋初值,即只赋初值一次;而对自动变量赋初值是在函数调用时进行,每调用一次函数重新给一次初值,相当于执行一次赋值语句。(所以静态局部变量i不算重复声明;若i为自动变量,则当调用它时i就存在,执行完cout<<++i<<endl;i就消失了,当再次执行int i=6;时相当于又重新定义了一个新的自动变量i)
(6)如果在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时自动赋初值0(对数值型变量)或空字符(对字符变量)。而对自动变量来说,如果不赋初值则它的值是一个不确定的值。
xialin168
2005-03-18
打赏
举报
回复
static int i=6;
为什么每次迭代i不恢复为6;
还有就是每次迭代都对i进行声明,不是不能重复声明一个变量的吗?
GeminiXXXCC
2005-03-17
打赏
举报
回复
static 是能解决命名冲突的工具!
不知道 yc0188(守护瓶(萍)) 是如何从这个程序得出这个结论的?
如果没有static,程序输出是
12,7
4,7
1,7
0
没有什么名字冲突啊。
不过个人反对这样的代码。
showlie
2005-03-17
打赏
举报
回复
只要概念清楚没什么难的。
1.变量作用域
2.静态变量的持久性
ZDL627
2005-03-17
打赏
举报
回复
学到了
MARK~~
laZZe
2005-03-17
打赏
举报
回复
顶楼上的,是变量的作用域和可见性问题。
mark~~
yuchengliu
2005-03-17
打赏
举报
回复
static 是能解决命名冲突的工具!
#include<iostream.h>
void main(){
int i=12;
for(;i>0;i/=3) //i作用域开始
{
cout<<i<<',';
static int i=6;//static int 声明开始
cout<<++i<<endl;
} //结束
cout<<i<<endl;
cin.get();
} //结束
输出结果:
12,7 ------7是static
4,8
1,9
0
skywgs
2005-03-17
打赏
举报
回复
12,4,1,0是第一个i的,7,8,9是第二个i的,虽第二个i是static,但只能在for里用。
L_BOY
2005-03-17
打赏
举报
回复
void main(){
int i=12;
for(;i>0;i/=3)
{
cout<<i<<','; //int i=12中的i
static int i=6; //int i=12中的i不可见,
cout<<++i<<endl; //static int i=6中的i,
}
cout<<i<<endl;
cin.get();
}
我想这样大家都清楚了吧
kobefly
2005-03-17
打赏
举报
回复
这个
。。。。。。。。。。。。。。。。
healer_kx
2005-03-17
打赏
举报
回复
这两个i不是一个啊, 它们的作用域不同,。而且互不影响
。
向量点乘的图形学意义
向量的点乘是入门图形学的重要基础,本身并不复杂,但因为总与叉乘(图形学前期用不着)放在一起讲,搞得新手都很混乱,本文单独讲解一些点乘的图形学意义,新手先忘掉叉乘吧。 1.向量 向量即空间中的一个点到另一个点...
可
解释
性机器学习:从入门到实战
机器学习的巨大成功导致AI应用的... 但是,这些系统如果无法向人类
解释
为何作出这样的决策,那么它们的有效性将会受到限制。如果用户要理解,信任和有效管理新兴的人工智能”合作伙伴“,那么可
解释
的AI将至关重要。
数据库的基础学习
数据库对于程序员来说是一个必备的技能,我也开始了数据的学习,看的教程比较老,是郝斌的sqlsever基础教程,用的数据库是sqlsever2008. 说起数据库,之前仿照的医药项目已经开始陆陆续续接触到了,所以也去3...
维度学习、度量学习
之所以将这三个放在一起,主要是在学习的时候,感觉他们之间有很大的关联,是一大类非监督学习,且其中的主要算法都可以从这几个学习方法的角度来
解释
。我的一个不成熟的
解释
是,这三种算法都是在寻找一种转换,将...
【入门必备】如何学习一门编程语言——这些你一定要知道
来和大家分享一下对于刚接触编程培训学习的小白来说,常常会问到一个问题:如何学习一门新的编程语言,关于学习编程语言这个主题,可能每个人都有不同的看法和做法,下面给初次接触编程语言学习的朋友一些学习建议吧...
C++ 语言
64,636
社区成员
250,963
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章