幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2447|回复: 6

[通用编程] 提问---register

[复制链接]

313

主题

1574

帖子

1万

积分

⑧专业

*永恒国度*

积分
14145
QQ
发表于 2007-8-15 15:35:41 | 显示全部楼层 |阅读模式
1.
void main()
{
register int i;
int tmp=0;
for(i=1;i<=100;i++)
tmp+=i;
printf("The sum is %d\n",tmp);
}
请问这个程序意义何在呢?

2.printf("\40:please input number=>");
\40 是什么转义呢?相当于空格吗?
[img][/img] http://shop33698673.taobao.com被别人嫉妒,证明你优秀,嫉妒别人说明你无能
回复

使用道具 举报

20

主题

197

帖子

2641

积分

⑥精研

积分
2641
QQ
发表于 2007-8-15 18:40:23 | 显示全部楼层
在通用转义符下....数字是八进制表示....40也就是十进制的32....转成ASCII就是空格...以上
签名要少于60,SO,i haven't upload my pic
回复 支持 反对

使用道具 举报

20

主题

197

帖子

2641

积分

⑥精研

积分
2641
QQ
发表于 2007-8-15 18:41:45 | 显示全部楼层
另外\\0XXX,是十六进制表示的说...详细内容请查阅C++ Primer
签名要少于60,SO,i haven't upload my pic
回复 支持 反对

使用道具 举报

19

主题

842

帖子

1万

积分

⑧专业

絕望青年,一起增高吧

积分
13676
发表于 2007-8-15 20:05:00 | 显示全部楼层
沒記錯了,register是萬惡的根源

一般來說,變量也是存放在RAM內的
可能有人會問[不放在RAM還可以放在那裡]
事實上玩過Assembly(組合語言,匯編語言)的也知道其實CPU內部也有一此儲存空間名為Register
一般的變數的讀寫過程是由Ram讀入Register以內,計算後便由Register寫回Ram中
如果在C中把物變數宣告成register模式,C Compiler(編譯器)便會盡可能把該變數放在Register之中
以減少讀寫RAM的時間,變相加快程式執行的進度

有一些新手聽過之後便開始瘋狂使用register,但十分不幸的,CPU中的Register數目是少得可憐的
同時開十個register變數,很有可能大部份的變數已不在register之內
更進一步是register給霸佔了,結果其他程式的讀寫便變得更慢

為著彼岸,便要與之妥協 但為著彼岸,更不能與之妥協

回复 支持 反对

使用道具 举报

23

主题

218

帖子

2470

积分

⑥精研

积分
2470
发表于 2007-8-16 11:49:42 | 显示全部楼层
补充楼上的,register(寄存器)是临时数据交换的必需,例如EAX一般是用来存放数学运算的操作数和函数返回值等,访问寄存器比内存快几个数量级,CPU几乎全部操作都需要使用到寄存器。如楼上所说,寄存器的数量是十分少的,至于具体数量取决于不同的CPU,我们一般使用的x86 CPU,编译器能使用到的就8个,而且有两个是几乎不能碰的(ESP、EBP,负责管理堆栈),有一个是数学运算必须的(EAX),一般要用register变量也就是做数学运算,所以说只有5个寄存器是可用的,实际根据不同的程序和编译器,数量就更少了。另外,不同编译器在编译时会根据实际情况把读写得多的变量自动放到寄存器里,例如for循环的记数变量一般会放到ECX里,用不着用户操心。另外,根据ANSI标准,编译器可以选择忽略register关键字,因此具体能起多大作用也是未知数。

一般来说,用户(特别是新手)不用使用这个关键字,就算使用也要注意场合,例如做循环记数变量、局部使用的指针等。
ONScripter for PSP/Windows中文版 http://blog.163.com/john_he_
回复 支持 反对

使用道具 举报

50

主题

994

帖子

6699

积分

管理员

爱干啥干啥!

Rank: 9Rank: 9Rank: 9

积分
6699
发表于 2007-8-16 22:38:00 | 显示全部楼层
很好奇lz在看什么书。
强烈建议看转看c++ primer

“放下屠刀,立地成佛” 故应先杀生,然后再成佛。

(\\_/) (-_-) ()+() this is bunny priest.
回复 支持 反对

使用道具 举报

19

主题

842

帖子

1万

积分

⑧专业

絕望青年,一起增高吧

积分
13676
发表于 2007-8-17 10:46:09 | 显示全部楼层
某已經問過這個問題..XD

為著彼岸,便要與之妥協 但為著彼岸,更不能與之妥協

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-5-4 11:11 , Processed in 0.024282 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表