标题:这个要怎么解释,分析下面程序的运行结果,并分析原因。
只看楼主
清风萨克斯
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2020-10-28
结帖率:100%
已结贴  问题点数:8 回复次数:1 
这个要怎么解释,分析下面程序的运行结果,并分析原因。
int x=6,y=5;

int fun_1(int a,int b)
{
static int x=1;
++a;
x+=a+b;
return x;
}
int main()
{
int x=10;
int i;
for(i=0;i<2;i++)
printf("%d\t",fun_1(x,y));
}

搜索更多相关主题的帖子: 运行 int 分析 原因 结果 
2021-01-02 13:21
风过无痕1989
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:8
帖 子:228
专家分:1050
注 册:2020-7-17
得分:8 
回复 楼主 清风萨克斯
程序代码:
#include<stdio.h>
int x = 6, y = 5;

int fun_1(int a, int b)
{
    static int x = 1;// 将 x 定义成静态局部变量,并赋初值为1,(静态局部变量存储于进程的全局数据区,即使函数返回,它的值也会保持不变,
                     // 所以,第二次循环回来,x = 17)
    ++a;             // 将接收的实参 x = 10 传递来的数自增1,即 a = 11
    x += a + b;      // 循环第一次相当于:x = 1 + a + b = 1 + 11 + 5 = 17;循环第二次相当于:x = 17 + a + b = 17 + 11 + 5 = 33
    return x;        // 返回 x
}
int main()
{
    int x = 10;
    int i;
    for (i = 0;i<2;i++)
        printf("%d\t", fun_1(x, y));
}
2021-01-02 16:01



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-504482-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.064508 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved