为什么会得到8,少的10去哪里了
细节是魔鬼
#include <stdio.h> int getAge(int numPeople) { int age; if(numPeople==1) age=10;//这里的错误!! else age =getAge(numPeople-1)+2; return age; } int main() { int fifthAge = getAge(5); printf("第5个人的年龄是%d岁", fifthAge); return 0; }
所以当numberpeople==1函数为0,即0+2+2+2+2=8
age=10的意思是是给age这个变量赋值10,即让这个人年龄为十岁。age==10的意思是age的值与10这个数字大小相等,因为还没给age赋值,所以age==10为假,如果先定义int age=10,然后age==10,就为真。系统之所以没有报错是因为C语言保护性不够强,系统认为该假0并没有得到使用不影响,如果是Java这种安全语言就会报错