GRIT️‍ 2023-06-23 14:58 采纳率: 80.6%
浏览 18

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

img


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

img


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

  • 写回答

1条回答 默认 最新

  • threenewbee 2023-06-23 15:05
    关注
    #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

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月23日