| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 329 人关注过本帖
标题:菜鸟新手 问题求解答 谢谢 关于register
只看楼主 加入收藏
Sliverwang
Rank: 2
等 级:论坛游民
帖 子:49
专家分:43
注 册:2011-4-1
结帖率:77.78%
收藏
已结贴  问题点数:10 回复次数:7 
菜鸟新手 问题求解答 谢谢 关于register
#include<stdio.h>
void main()
{
    long fac(long);
    long i,n;
    scanf("%ld",&n);
    for(i = 1;i <= n;i++ )
    printf("%ld != %d",i,fac(i));
}
long fac(long n)
{
    register long i,f=1;
    for (i = 1;i <= n;i++)
    f = f * i;
    return(f)
}

这是一个1到n的阶乘
 register long i,f=1;
    for (i = 1;i <= n;i++)
    f = f * i;
是怎么理解的呢??
谢谢解答一下
2011-04-09 11:27
hnuhsg1226
Rank: 9Rank: 9Rank: 9
来 自:中国
等 级:蜘蛛侠
威 望:2
帖 子:314
专家分:1314
注 册:2011-3-27
收藏
得分:3 
register说明符就是将变量i,f放在寄存器中存储,不访问内存,加快了运行速度,其他没什么特别的

我的地盘
2011-04-09 11:41
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:3 
使用多的变量放在那里可以加快速度。现在的编译器都不需要加了,编译器会自动识别这种变量,并放在CPU寄存器中.

   唯实惟新 至诚致志
2011-04-09 12:12
Sliverwang
Rank: 2
等 级:论坛游民
帖 子:49
专家分:43
注 册:2011-4-1
收藏
得分:0 
回复 2楼 hnuhsg1226
  能简单的说一说 register long i,f=1;
    for (i = 1;i <= n;i++)
    f = f * i;
是怎么运行的吗?
2011-04-09 12:29
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:3 
类似static变量,即退出函数的时候,保留f的值,再次调用的时候, 是用上次的f值继续运算。

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-04-09 12:31
Sliverwang
Rank: 2
等 级:论坛游民
帖 子:49
专家分:43
注 册:2011-4-1
收藏
得分:0 
回复 3楼 qq1023569223
哦 现在是这样呀
2011-04-09 12:32
Sliverwang
Rank: 2
等 级:论坛游民
帖 子:49
专家分:43
注 册:2011-4-1
收藏
得分:0 
回复 5楼 ansic
弱弱的问一下那那个for语句不多于吗??
2011-04-09 12:34
baobaoisme
Rank: 7Rank: 7Rank: 7
来 自:AVATAR
等 级:黑侠
帖 子:260
专家分:506
注 册:2010-7-9
收藏
得分:3 
现在编译器都会自动优化了,其实用的很少吧
2011-04-09 12:40
快速回复:菜鸟新手 问题求解答 谢谢 关于register
数据加载中...
 
   



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

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