纯纯铁废丶物 2021-11-29 22:33 采纳率: 57.1%
浏览 73
已结题

求输出的两个数。11111

#include <stdio.h>
int f(int x)
{ static int y=1;
x+=y;
y++;
return x;
}
int main(void)
{ int k;
k=f(3);
printf("%d %d\n",k,f(k)); //%d和%d之间只有1个空格
return 0;

  • 写回答

1条回答 默认 最新

  • 关注

    4 6
    static int y=1;在f函数中,y是静态变量,初始化只执行一次,相当于全局变量。

    具体过程如下:
    k=f(3)
    在f(3)函数中,x=3,y=1
    x+=y = 4
    y++后y=2
    return x,也就是返回4
    所以在main函数中,k=f(3)=4
    printf函数显示的第一个k的值就是4

    地刺执行f(k),也就是f(4)
    x=4
    y=2(静态变量,相当于全局,上一次执行f函数后,y的值是2)
    x+=y = x+y=4+2=6;
    y++后y=3
    return x,也就是返回6,
    printf函数显示的第二个值就是6

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 12月7日
  • 已采纳回答 11月29日
  • 创建了问题 11月29日