函数嵌套执行的顺序

函数嵌套执行的顺序

  1. 函数在嵌套调用的时候,调用顺序与书写顺序相反

    #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

    从左往右,类似于栈操作,先入后出,最后输入的先执行

  2. 再类似于如下代码

      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
posted @ 2020-09-30 10:59  今天的风,甚是喧嚣  阅读(977)  评论(0)    收藏  举报