问题:关于函数的数值运算问题

img


这个我算的是8,9,那个7是怎么算的啊?

img


这个下面的子函数是交换两个数,那么交换完之后应该是400,300,a3=200,a4=100答案的那个顺序是怎么来的?求详细解答

#include <stdio.h>

int fun(int x) 
{ 
    int y = 0; 
    static int z = 3; 
    z++;++y; 
    return (x+y+z); 
} 
int main() { 
    int i, x = 2;
    for (i = 0; i < 2; i++) 
        printf("%5d", fun(x++));    
}

结果是 7 9
无论如何不可能输出3个数字,因为i作为循环变量,0 1 循环2次,2就退出了。

下面一个题目,无论如何,sub1(int x, int y)
的确交换了 x y 但是不会对调用者有任何影响,只有指针变量才能影响到原来的变量。
但是因为a1是全局变量,会影响
所以第一次执行后a1=a3=100,a=400,a3=100,a4=200,
第二次执行a1=a1=100,a2=400,a3=100,a4=200
所以结果是100,400,100,200