问题描述
- static静态变量问题,菜鸟求大家伙给个答案
-
int main(void)
{
static int i=5;
if(--i)
{
main();
cout<<i<<endl;
}
}
为什么输出结果是0000?
菜鸟求详解啊!么么哒
解决方案
4,3,2,1,0一共5个数,因为0的时候不进if了所以递归终止了,然后返回到上一次递归也就是i=1的时候,但是这时候实际上i的值是0了所以打印0并且换行,以此类推,
i=2的递归,打印 0 换行
i=3的递归,打印 0 换行
i=4的递归,打印 0 换行
所以是4次0
首先你得理解递归的意思
解决方案二:
代码好高级的样子,点在 静态变量和递归;
运行:
i = 5;
if(5) i = 4
进入main
if(4) i = 3
进入main
if(3) i = 2
进入main
if(2) i = 1
进入main
if(1) i = 0
进入main
if(0)
不执行
打印 0 换行
打印 0 换行
打印 0 换行
打印 0 换行
结束
可以使用 gdb 调试
或者 在VC上设置断点调试
解决方案三:
static静态成员变量只在第一次声明时定义。
在以后的函数调用中,实际操纵的都是同一块内存区域,而非其他普通变量的副本。
所以....
时间: 2024-11-05 12:25:37