register变量
火车的英文Register修饰符暗⽰编译程序相应的变量将将被频繁使⽤,如果可能的话,应将其保存在CPU的寄存器中,以指加快其存取速度。但是,使⽤register修饰符有⼏点限制。
一八联合国际学校⾸先,register变量必须是能被CPU寄存器所接受的类型,这通常意味着register变量必须是⼀个单个的值,并且其长度应⼩於或等於整型的长度。但是,有些机器的寄存器也能存放浮点数。
其次,因为register变量可能不存放在内存中,所以不能⽤取址符运算符“ & ”来获取取址符运算符“ &” register变量的地址。如果你试图这样做,编译程序就会报告这是⼀个错误。
register变量修饰符的⽤处有多⼤还受其它⼀些规则的影响。因为寄存器的数量是有限的,⽽且某些寄存器只能接受特定类型的数据(如指针和浮点数),因此,真正能起作⽤的register修饰符的数⽬和类型都依赖於运⾏程序的机器,⽽任何多余的register修饰符都将被编译程序所忽略。
哈佛大学入学条件那麽,甚麽时候使⽤register变量修饰符呢?回答是,对现有的⼤多数编译程序来说,永远不要使⽤register变量修饰符。早期的C编译程序不会把变量保存在寄存器中,除⾮你命令它这样做,这时register变量修饰符是C语⾔的⼀种很有价值的补充。然⽽,随着编译程序设计技术的进步,在决定哪些变量应该被存到寄存器中时,现在的C编译程序能必程序员作出更好的决定。实际上,许多C编译程序会忽略register修饰符,因为尽管它完全合法,但它仅仅是暗⽰⽽不是命令。
西蒙科威尔>x atr
省去了内存与CPU的数据交换过程,直接使⽤CPU的内部寄存器。
li8_19.c
说明:(1)只有局部变量和形参可以作为register变量,全局变量不⾏。美丽的回忆
tenga美国的历史(2)80x86系列CPU最多可使⽤的register变量数⽬有限。int型可使⽤8个通⽤寄存器。she will be loved
awful造句实际上有些系统并不把register变量存放在寄存器中,⽽优化的编译系统则可以⾃动识别使⽤频繁的变量⽽把他们放在寄存器中,因此⽤register声明变量实际上是不必要的。我们只需要知道有这么⼀种变量即可。
(3)静态变量不能定义为register。