编译时出现错误
错误:需要左值作为赋值fac(0)= 1的左操作数;
 错误:需要左值作为赋值fac(i)= i * fac(i-1)的左操作数;

#include<stdio.h>


int fac(int i)


{

    int j;

    fac(0)=1;

    fac(i)=i*fac(i-1);


    printf("%d",fac(i));


}

int main()
{

    int x,y;

    printf("enter the number");

    scanf("%d",&x);

    if(x>=0)

    {
        fac(x);
    }


}

最佳答案

在C语言中,您不会以这种方式返回函数值。相反,你会写类似

 if ( i == 1 || i == 0 )
   return 1;

 return i * fac(i - 1);


问题是fac(0)的结果未引用您可以写入的对象;就像尝试为1分配一个新值-您不能这样做。

关于c - 需要左值作为赋值左操作数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38400138/

10-11 23:09