#include<stdio.h>int fun(int m,int n){ if(n==0) return m; printf(" qwef\n"); fun(n,m%n); printf(" xvb\n");}void main(){ int m=45,n=15; printf("%d",fun(m,n));}这样的输出结果就是 qwef xvb8如果改变数中第二个printf则#include<stdio.h>int fun(int m,int n){ if(n==0) return m; printf(" qwef\n"); fun(n,m%n); printf(" 127587825\n");}void main(){ int m=45,n=15; printf("%d",fun(m,n));}这样的输出结果就是 qwef 12758782513为什么会这样?我只是改变了一个输出语句,为什么会对函数的返回值产生影响?
3 回答
朕日理万机
TA贡献27条经验 获得超28个赞
两次运行都会递归到fun(15,0)。然后到15%0,对0取余是未定义的行为,和除0是一样的。编译器可能会给出警告,但不仍然会通过。所以每次运行可能都会有不同的值,不是你输出语句造成的。
- 3 回答
- 0 关注
- 1521 浏览
添加回答
举报
0/150
提交
取消