运行结果为
- 1!=1 2!=2
- 3!=6 4!=24
- 5!=120
每次调用fac(i),就输出一个i,同时保留这个i!的值,以便下次再乘(i+1)。
2) 如果初始化后,变量只被引用而不改变其值,则这时用静态局部变量比较方便,以免每次调用时重新赋值。 但是应该看到,用静态存储要多占内存,而且降低了程序的可读性,当调用次数多时往往弄不清静态局部变量的当前值是什么。因此,如不必要,不要多用静态局部变量。
用register声明寄存器变量
一般情况下,变量的值是存放在内存中的。当程序中用到哪一个变量的值时,由控制器发出指令将内存中该变量的值送到CPU中的运算器。经过运算器进行运算,如果需要存数,再从运算器将数据送到内存存放。如图所示。

为提高执行效率,C++允许将局部变量的值放在CPU中的寄存器中,需要用时直接从寄存器取出参加运算,不必再到内存中去存取。这种变量叫做寄存器变量,用关键字register作声明。例如,可以将例4.14中的fac函数改写如下:
- int fac(int n) {
- register int i,f=1; //定义i和f是寄存器变量 for(i=1;i<=n;i++) f=f*i;
- return f; }










