| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 585 人关注过本帖
标题:朋友们帮忙看一个函数计算题
只看楼主 加入收藏
kate333333
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-2-16
收藏
 问题点数:0 回复次数:6 
朋友们帮忙看一个函数计算题
#include<stdio.h>
f(int a)
{
static c=0;
c=a+c++;printf("a=%d,c=%d\n",a,c);
return(c); /*怎么c值就分别成了3和7了呢*/
}
main()
{
int a=2,k,i;
for(i=0;i<2;i++)
k=f(a++);
printf("%d\n",k);
getch();
}
搜索更多相关主题的帖子: 朋友 函数 
2007-03-04 15:43
田里兵蜂
Rank: 1
等 级:新手上路
威 望:2
帖 子:604
专家分:0
注 册:2007-1-29
收藏
得分:0 
static c=0;
c=a+c++;printf("a=%d,c=%d\n",a,c);
第一次
传入的a值为2
c=2+c++(c取值为0)
c=2;
因为是c++, 所以这个表达式执行完后,C要加1
C=C+1;2+1=3
2007-03-04 16:45
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
得分:0 
#include<stdio.h>
f(int a)
{
static c=0;
c=a+c++; /*第一次给f函数传递的a=2(a传递完就增为3),"++"是右结合性,等式右边C先增1才和a加,所以c=3*/
/*第二次a已经增为3,c是静态量还是3,自增变为4,所以c=7*/
printf("a=%d,c=%d\n",a,c);
return(c); }
main()
{
int a=2,k,i;
for(i=0;i<2;i++)
k=f(a++);
printf("%d\n",k);
getch();
}
这个练习好像就是为了理解单目运算符++的优先级和结合性的

“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2007-03-04 16:54
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
收藏
得分:0 
我比较同意二楼的说法,也就是第一次c=0;
看一下下面的程序就知道了
#include<stdio.h>
void main()
{
int c=0,d;
d=1+c++;
printf("%d %d",d,c);
}
输出的是1 1;
也就是首先是用c=0,加了之后c 在加1;

2007-03-05 12:38
moonwalker
Rank: 1
等 级:新手上路
威 望:1
帖 子:909
专家分:2
注 册:2007-3-2
收藏
得分:0 
不管怎样,我不赞同像“c=a+c++;”这样的语句,可读性、可移植性都不好
因为不同的操作系统可能操作数的执行顺序是不一样的
改写成 c=(a+c)++;
或 c=a+(c++);
这样就不会有歧义了!

“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!
2007-03-05 23:17
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
static c=0;
只有一 次赋初值.
第一次a=2;f(2){c=0,c=2+c++ --->c=3,Print(3);}a=3;
第二次a=3;f(3){c=3,c=3+c++ --->c=7,Print(7);}a=4;

倚天照海花无数,流水高山心自知。
2007-03-06 10:22
kate333333
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2007-2-16
收藏
得分:0 

嗯,没有深刻体会县贡献值计算在自加的意义
谢啦


664934112
2007-03-06 13:03
快速回复:朋友们帮忙看一个函数计算题
数据加载中...
 
   



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

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