黑马程序员技术交流社区
标题:
下面这段代码为什么会运行出错?有关全局变量
[打印本页]
作者:
尾尾
时间:
2015-9-30 11:09
标题:
下面这段代码为什么会运行出错?有关全局变量
//全局变量思考练习
//定义全局变量时,数组没有初始化则都为0
//定义局部变量时,数组没有初始化则都为垃圾数,除法部分初始化或者全部初始化
//实现一个函数调用本身不会出现死递归的案例
#include<stdio.h>
int a=0;
int add();
int main(){
add();
return 0;
}
////下面这为什么运行出错?
int add(){
if(a<5)add();
printf("add调用第%d次\n",a);
a++;
return 0;
}
复制代码
作者:
尾尾
时间:
2015-9-30 11:10
求各位大神指点
作者:
Abuzzworld
时间:
2015-9-30 13:38
RIDP 发表于 2015-9-30 13:15
虽然我没复制你的代码试运行,但是我记得
if函数后面跟条件之后有{}的吧?
if (条件) {
只执行if判断后的一条语句的时候是可以不加{}的,加了{}表示执行括号内的所有语句
作者:
liuhao_hm
时间:
2015-10-3 14:10
你这样调用会导致死循环的,你的a++根本执行不到
#include<stdio.h>
int a=0;
int add();
int main(){
add();
return 0;
}
////下面这为什么运行出错?
int add(){
if(a<5){
printf("add调用第%d次\n",a);
a++;
add();
}
return 0;
}
复制代码
作者:
HI奋斗
时间:
2015-10-3 15:34
对啊,你的if语句没有大括号,只能执行后面的一句语句,知道到之后又调用一个空函数,之后一直循环,不会往下进行,会造成无限循环。
作者:
wwf707542865
时间:
2015-10-3 15:46
兄弟啊,你a都没开始做自增,前面就开始死循环了,将a++放到if前面去
作者:
洪吉童
时间:
2015-10-4 09:49
无限递归下去了,a永远是==0的
作者:
Eric_h
时间:
2015-10-4 09:53
死循环了,没执行到printf ,也没执行到a++
作者:
wxd123
时间:
2015-10-4 23:05
死循环,楼主加油!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2