中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > C/C++
一个奇怪的函数参数定义及解答
作者:未知 时间:2005-09-13 23:28 出处:Blog.ChinaUnix.net 责编:chinaitpower
              摘要:一个奇怪的函数参数定义及解答

一个奇怪的函数参数定义及解答

关于一个奇怪的函数参数定义及解答

问题来源于:涛涛的blog:http://www.sysinfo.cn/index.php?action=show&id=297&page=1#cm433

解答:kernelxu:http://blog.chinaunix.net/index.php?blogId=5727

一个奇怪的函数参数定义及解答

奇怪的参数声明:

unsigned int str_len(s)
register char *s;
{
  register char *t;

  t = s;
  for (;;) {
    if (!*t) return t - s; ++t;
    if (!*t) return t - s; ++t;
    if (!*t) return t - s; ++t;
    if (!*t) return t - s; ++t;
  }
}

试了一下编译可以通过,也可以正常运行...

估计跟

unsigned int str_len(register char *s)
{
  register char *t;

  t = s;
  for (;;) {
    if (!*t) return t - s; ++t;
    if (!*t) return t - s; ++t;
    if (!*t) return t - s; ++t;
    if (!*t) return t - s; ++t;
  }
}

是等价的...

可是不知道为什么要来四次if (!*t) return t - s; ++t;

不知道跟一次有什么区别...

——————————————————————————————————

我的解答:

1、是老板本的C吧,在老版本C语言中,参数类型说明允许放在函数说明部分的第2行单独指定。

例如:

int fun(s)

int s;

{

...

}
2、这里写四条 if (!*t) return t - s; ++t;可能是考虑到处理器采用流水线结构。早期经典的奔腾有5级流水线结构,奔腾II有12级超流水线结构,而Pentium 4的流水线就长达20级。而经典奔腾每条整数流水线都分为四级流水,即指令预取、译码、执行、写回结果,浮点流水又分为八级流水。

(关于流水线可查看:

1)、CPU的流水线:

http://www.blueidea.com/bbs/NewsDetail.asp?id=1821795)

2)、pipeline较详细说明:

http://www.cs.umass.edu/~weems/CmpSci535/Discussion16.html

3)、《Starting Down the Pipeline》:http://faculty.uwb.edu/aberger/CSS422SP05/Articles/Pipelines%20part%201%20and%202.pdf

4)、The Intel Pentium 4 processor 20 stages of pipeline introduce:

http://www.karbosguide.com/hardware/module3e14.htm


这里是地址的运算,所以我猜想可能是这个原因吧。

不知道是不是这样,请高手指点!

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有