[英]Why the printf statement inside the fun(int i) is not executed?
這是一個具有遞歸循環的代碼。 我的輸出為199,但未執行標記為--A的printf語句。 請告訴我為什么??
#include <stdio.h>
int fun(int); // function defined
int main()
{
printf(" %d ", fun(200)); // function called
return 0;
}
int fun(int i) // entire body of the function
{
static int d = 0;
d++;
if (i % 2)
return (i++);
else
return fun(fun(i - 1));
printf("%d ", d);// ------A
} // function fun(int) ends here.
來自:
if ( i%2 ) return (i++);
else return fun(fun( i - 1 ));
如果函數收斂,則兩部分都將返回。 因此, printf
是無法訪問的代碼。
因為return
終止當前功能。
return
將程序的控制權返回給調用函數。 因此,在執行函數內部調用return
之后沒有任何事情。 如果要調用printf
,請將其放在return
之前。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.