函数嵌套执行的顺序
函数嵌套执行的顺序
-
函数在嵌套调用的时候,调用顺序与书写顺序相反
#include <stdio.h> int add(int, int); int main(void) { int i = 2, j = 3, sum; sum = add(add(i, j), i = i + j); printf("sum = %d\n", sum); return 0; } int add(int x, int y) { int z; return z = x + y; }这样一个函数输出结果最后为13,函数过程如下
- 首先执行
i = i + j结果i为5 - 然后把
i = 5代入内add函数作为i的值 ,add(5, 3) - 再算出结果
(5 + 3)作为外add函数的i值,此时就是add(8, 3) - 最后算得13
从左往右,类似于栈操作,先入后出,最后输入的先执行
- 首先执行
-
再类似于如下代码
1 #include <stdio.h> 2 int fun1(int ,int); 3 int fun2(int ,int); 4 int fun3(int ,int); 5 int main(void) 6 { 7 fun1(fun2(1, 1), fun3(1, 1)); 8 return 0; 9 } 10 11 int fun1(int x, int y) 12 { 13 printf("%s, [%d]\n", __FUNCTION__, __LINE__); 14 return 0; 15 } 16 int fun2(int x, int y) 17 { 18 printf("%s, [%d]\n", __FUNCTION__, __LINE__); 19 return 0; 20 } 21 int fun3(int x, int y) 22 { 23 printf("%s, [%d]\n", __FUNCTION__, __LINE__); 24 return 0; 25 }其中
printf("%s, [%d]\n", __FUNCTION__, __LINE__);是打印行号和函数名执行的结果为
fun3, [23] fun2, [18] fun1, [13]- 上面明显可以看出来,先执行函数3,然后执行函数2,最后执行函数1

浙公网安备 33010602011771号