
提问一个关于C语言的问题
#include<stdio.h>Function(inta,intb){staticintm,i=2;i+=m+1;m=i+a+b;return(m);}main(){...
#include <stdio.h>
Function(int a,int b)
{
static int m, i=2;
i+=m+1;
m=i+a+b;
return(m);
}
main()
{
int k=4, m=1,p;
p=Function(k,m);
printf("%d\n",p);
p=Function(k,m);
printf("%d\n",p);
}
请问输出结果为什么是8 17 展开
Function(int a,int b)
{
static int m, i=2;
i+=m+1;
m=i+a+b;
return(m);
}
main()
{
int k=4, m=1,p;
p=Function(k,m);
printf("%d\n",p);
p=Function(k,m);
printf("%d\n",p);
}
请问输出结果为什么是8 17 展开
4个回答
展开全部
第一个Function
Function(int a,int b)
{
static int m, i=2;
i+=m+1;
m=i+a+b;
return(m);
}
a=4,b=1
i=i+m+1-->i=2+0+1=3
m=i+a+b-->m=3+4+1=8
所以输出结果为8
第二个Function
因为在Function中的i,m宣告为static(静态),也就是说再次执行这个Function时,i,m会被累加
即为i=3,m=8
所以
a=4,b=1
i=i+m+1-->i=3+8+1=12
m=i+a+b-->m=12+4+1=17
所以输出结果为17
写的很乱,请多包涵!
Function(int a,int b)
{
static int m, i=2;
i+=m+1;
m=i+a+b;
return(m);
}
a=4,b=1
i=i+m+1-->i=2+0+1=3
m=i+a+b-->m=3+4+1=8
所以输出结果为8
第二个Function
因为在Function中的i,m宣告为static(静态),也就是说再次执行这个Function时,i,m会被累加
即为i=3,m=8
所以
a=4,b=1
i=i+m+1-->i=3+8+1=12
m=i+a+b-->m=12+4+1=17
所以输出结果为17
写的很乱,请多包涵!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一次调Function是,实际上是Function(4,1),这次调用中:a=4,b=1
i+=m+1;结果i=3. 在该语句运行前,注意m和i为静态变量,其处置分别为0与2.
m=i+a+b;结果:m=8
return (m)将返回8.
所以,主函数会打印出8.
第2次调Function是,实际上是Function(4,1),这次调用中:a=4,b=1
i+=m+1;结果i=12. 注意在该语句运行前,i和m为静态变量,其处置分别为3与8.
m=i+a+b;结果:m=17
return (m)将返回17.
所以,主函数会打印出17.
i+=m+1;结果i=3. 在该语句运行前,注意m和i为静态变量,其处置分别为0与2.
m=i+a+b;结果:m=8
return (m)将返回8.
所以,主函数会打印出8.
第2次调Function是,实际上是Function(4,1),这次调用中:a=4,b=1
i+=m+1;结果i=12. 注意在该语句运行前,i和m为静态变量,其处置分别为3与8.
m=i+a+b;结果:m=17
return (m)将返回17.
所以,主函数会打印出17.
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Function函数中的m,i是静态变量,它们若没有赋值,其初值为0。所以第一次调用时a,b分别为4,1m为0,i+=m+1,i=3;m=i+a+b;即3+4+1=8,现在Function函数中的m,i已经是8,3再一次用上述运算即可得17
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一个程序等价为:
x += 1;
x += 1;
y = x + x;
第二个程序等价为:
x += 1;
x += 1;
z += x + x;
x += 1;
y = z + x;
求采纳为满意回答。
x += 1;
x += 1;
y = x + x;
第二个程序等价为:
x += 1;
x += 1;
z += x + x;
x += 1;
y = z + x;
求采纳为满意回答。
追问
不太明白,能不能说说程序具体的算法。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询