社区
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
大家解释解释吧。
...全文
296
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不是一个啊, 它们的作用域不同,。而且互不影响
。
JVM内存状况查看方法和分析工具
Java本身提供了多种丰富的方法和工具来帮助开发人员查看和分析GC及JVM内存的状况,同时开源界和商业界也有一些工具可用于查看、分析GC及JVM内存的状况。通过这些分析,可以排查程序中内存泄露的问题及调优程序的性能。下面介绍几种常用的免费工具,其中知名的有JProfiler 等。 1. 输出GC日志 输出GC日志对于跟踪分析GC的状况来说,无疑是最直接地分析内存回收状况的方法,
java内存加载状况监听_JVM内存状况查看方法和分析工具
Java本身提供了多种丰富的方法和工具来帮助开发人员查看和分析GC及JVM内存的状况,同时开源界和商业界也有一些工具可用于查看、分析GC及JVM内存的状况。通过这些分析,可以排查程序中内存泄露的问题及调优程序的性能。下面介绍几种常用的免费工具,其中知名的有JProfiler 等。1. 输出GC日志输出GC日志对于跟踪分析GC的状况来说,无疑是最直接地分析内存回收状况的方法,只是GC日志输出后需要人...
java jvm 查看内存_JVM内存状况查看方法和分析工具(下)
从以上信息中可看出JVM堆的配置信息,如NewSize、NewRatio、SurvivorRatio等;JVM堆的使用情况,新生代中的Eden Space、From Space、To Space的使用情况,旧生代和持久代的使用情况。要注意的是在使用CMS GC的情况下,jmap -heap的执行有可能会导致Java进程被挂起。JVM中对象的内存的占用情况在查看JVM内存状况时,除了要知道每个代的占...
RuoYi-Vue-Plus 5.X 与 RuoYi-Cloud-Plus 2.X 统一 UI 前端代码仓库
本仓库为前端技术栈 Vue3 + TS + Element Plus + Vite 版本。 官方项目: 基于 React + Ant Design 版本前端项目 plus-ui-react 成员项目: 基于 vben5(ant-design-vue) 的前端项目 ruoyi-plus-vben5 成员项目: 基于soybean 的前端项目 ruoyi-plus-soybean
XC61.SHX
当 CAD 缺失对应字体时,图纸文字会显示异常,出现乱码、问号。将下载好的字体文件复制到 AutoCAD 的 Fonts 文件夹中,即可恢复正常显示。
C++ 语言
65,213
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章