为了账号安全,请及时绑定邮箱和手机立即绑定

请问为什么我输出的年龄是9?还有 age=tage(5);为什么不能直接写成tage(5)

#include <stdio.h> 

int tage(int n)

{   int age;

    if(n==1)

    age=10;

    else

    return age=2+tage(n-1); 

}


int main() 

{   int age;

    age=tage(5);

    

printf("第5个人的年龄是%d岁",age);

return 0;

}


正在回答

2 回答

同学,你这样输出的结果应该是零的;

你的错误在于 没有 把函数调用的 值 返回 给main()函数的变量 age ;


0 回复 有任何疑惑可以回复我~

第一个问题,第五行,应该是 return  age=10 ,一个函数调用到n==1 时最后要有返回参数结束调用的运行,改了之后就可以了;

第二个问题,age=tage(5)的意思是调用函数tage(),把函数返回的参数值赋给age,

如果你是直接用tage(5)的话,那么只是调用了一个函数,而且函数的返回值你也没有安排一定的储存位置给它,也就是说age并没有被赋值,那么按照自动储存类型,age会被自动初始化为零

//本人为初学者,一愚之见,仅供参考

0 回复 有任何疑惑可以回复我~
#1

慕运维5055354 提问者

#include <stdio.h> int tage(int n) { int age; if(n==1) return age=10; else return age=2+tage(n-1); } int main() { int age; tage(5); printf("第5个人的年龄是%d岁",age); return 0; } 那这样结果为何为54
2018-09-26 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

请问为什么我输出的年龄是9?还有 age=tage(5);为什么不能直接写成tage(5)

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信