标题:大侠,函数,有一点不懂?
只看楼主
松木
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2004-8-5
 问题点数:0 回复次数:1 
大侠,函数,有一点不懂?

int a=1,b=2; int func1(int x) {x+=a++; b++; return(x); } int c=3; int func2(int x,int y) {int a; a=x+y; b++;c++; return(a); } main() {int u=4,v=5; int s1,s2; printf("\na=%d,b=%d,c%d,u=%d,v=%d",a,b,c,u,v); h:{char c='A'; int u='a'; c+=32; printf("\nc=%c,u=%d",c,u); } printf("\nc=%d,u=%d",c,u); s1=func1(u); printf("\na=%d,b=%d,c=%d,s1=%d",a,b,c,s1); s2=func2(u,v); printf("\na=%d,b=%d,c=%d,s2=%d",a,b,c,s2); }

上面的运行结里是:

a=1,b=2,c=3,u=4,v=5

c=a,u=97

c=3,u=4

a=2,b=3,c=3,s1=5

a=2,b=4,c=4,s2=9

上面的s1=5和s2=9是怎么得来的,谢谢!

搜索更多相关主题的帖子: int 函数 return 
2004-08-13 17:24
flylee
Rank: 5Rank: 5
等 级:职业侠客
帖 子:309
专家分:374
注 册:2004-8-10
得分:0 

[QUOTE]int a=1,b=2; int func1(int x) {x+=a++; b++; return(x); } int c=3; int func2(int x,int y) {int a; a=x+y; b++;c++; return(a); } main() {int u=4,v=5; int s1,s2; printf("\na=%d,b=%d,c%d,u=%d,v=%d",a,b,c,u,v); h:{char c='A'; int u='a'; c+=32; printf("\nc=%c,u=%d",c,u); } printf("\nc=%d,u=%d",c,u); s1=func1(u); printf("\na=%d,b=%d,c=%d,s1=%d",a,b,c,s1); s2=func2(u,v); printf("\na=%d,b=%d,c=%d,s2=%d",a,b,c,s2); }[/QUOTE]

在 “s1=func1(u);” 中,将u的值(也就是4)传递给了函数func1的一个形式参数x,由于全局变量a的值为1,所以在执行了 “x+=a++;” 之后x的值变为5,返回这个值并赋给了s1,因此输出 s1=5 同样的方法将u和v传递给了func2的形式参数x和y,并且把x+y的值(9)赋给了函数内部的一个局部变量a(并不是在程序的开头声明的全局变量,在局部变量同全局变量同名的情况下,局部变量具有优先权),返回a的值赋给了s2,因此输出 s2=9

2004-08-14 00:45



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




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

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