主题:[讨论]C语言中关于register的问题
#include<stdio.h>
void main ()
{
long fac(long);
long i,n;
scanf("%ld",&n);
for(i=1;i<=n;i++)
printf("%ld!=%ld\n",i,fac(i));
}
long fac(long n)
{
register long i,f=a;
for(i=1;i<=n;i++)
f=f*i;
return(f);
}
就是l
ong fac(long n)
{
register long i,f=a;
for(i=1;i<=n;i++)
f=f*i;
return(f);
}
这里我不打懂,书上说 i 和f 都是寄存器变量,那么我第一次i=1,走过了for()
f就等于1,第二次 n=2,那么还需不需要再走一次for(i=1,;i<=n;i++)?
第三次是n=3,接下来就怎么走?是直接跳过i=1,从寄存器里取出上次 i 的值
2吗??然后直接f=f*i ???
void main ()
{
long fac(long);
long i,n;
scanf("%ld",&n);
for(i=1;i<=n;i++)
printf("%ld!=%ld\n",i,fac(i));
}
long fac(long n)
{
register long i,f=a;
for(i=1;i<=n;i++)
f=f*i;
return(f);
}
就是l
ong fac(long n)
{
register long i,f=a;
for(i=1;i<=n;i++)
f=f*i;
return(f);
}
这里我不打懂,书上说 i 和f 都是寄存器变量,那么我第一次i=1,走过了for()
f就等于1,第二次 n=2,那么还需不需要再走一次for(i=1,;i<=n;i++)?
第三次是n=3,接下来就怎么走?是直接跳过i=1,从寄存器里取出上次 i 的值
2吗??然后直接f=f*i ???