A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. //全局变量思考练习
  2. //定义全局变量时,数组没有初始化则都为0
  3. //定义局部变量时,数组没有初始化则都为垃圾数,除法部分初始化或者全部初始化

  4. //实现一个函数调用本身不会出现死递归的案例
  5. #include<stdio.h>
  6. int a=0;
  7. int add();
  8. int main(){
  9.     add();
  10.     return 0;
  11. }
  12. ////下面这为什么运行出错?
  13. int add(){
  14.     if(a<5)add();
  15.     printf("add调用第%d次\n",a);
  16.     a++;
  17.     return 0;
  18. }
复制代码

12 个回复

倒序浏览
求各位大神指点
回复 使用道具 举报
虽然我没复制你的代码试运行,但是我记得
if函数后面跟条件之后有{}的吧?
if (条件) {
代码
}
你的{}没了- -
回复 使用道具 举报
RIDP 发表于 2015-9-30 13:15
虽然我没复制你的代码试运行,但是我记得
if函数后面跟条件之后有{}的吧?
if (条件) {

只执行if判断后的一条语句的时候是可以不加{}的,加了{}表示执行括号内的所有语句
回复 使用道具 举报
Abuzzworld 发表于 2015-9-30 13:38
只执行if判断后的一条语句的时候是可以不加{}的,加了{}表示执行括号内的所有语句 ...

0.0哦!这个我倒是还真没有研究过,自己一般都是{}模式写着,哈哈,学习了
回复 使用道具 举报
你这样调用会导致死循环的,你的a++根本执行不到
  1. #include<stdio.h>
  2. int a=0;
  3. int add();
  4. int main(){
  5.     add();
  6.     return 0;
  7. }
  8. ////下面这为什么运行出错?
  9. int add(){
  10.     if(a<5){
  11.         printf("add调用第%d次\n",a);
  12.         a++;
  13.         add();
  14.     }
  15.     return 0;
  16. }
复制代码
回复 使用道具 举报
对啊,你的if语句没有大括号,只能执行后面的一句语句,知道到之后又调用一个空函数,之后一直循环,不会往下进行,会造成无限循环。
回复 使用道具 举报
兄弟啊,你a都没开始做自增,前面就开始死循环了,将a++放到if前面去
回复 使用道具 举报
chensc 金牌黑马 2015-10-4 07:23:26
9#
学习学习!
回复 使用道具 举报
无限递归下去了,a永远是==0的
回复 使用道具 举报
死循环了,没执行到printf ,也没执行到a++
回复 使用道具 举报
死循环,楼主加油!
回复 使用道具 举报
学习学习!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马