| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 592 人关注过本帖
标题:赋值语句,用“=”,提示non-lvalue in assiment,为什么?谁能帮忙看看?谢 ...
取消只看楼主 加入收藏
计算机之祖
Rank: 2
等 级:论坛游民
帖 子:63
专家分:17
注 册:2015-9-1
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:2 
赋值语句,用“=”,提示non-lvalue in assiment,为什么?谁能帮忙看看?谢谢!
#include<stdio.h>
#include<stdlib.h>

int f(int n)
{
    if (n==1)
    f(n)=1;
    else
    f(n)=n*f(n-1);
}

int main()
{
   int a=5;
   printf("%d\n",f(a));
   
   system("pause");
   return 0;
}
2015-09-01 22:05
计算机之祖
Rank: 2
等 级:论坛游民
帖 子:63
专家分:17
注 册:2015-9-1
收藏
得分:0 
回复 2楼 TonyDeng
是不是:
我定义的int f(n)函数只是提供了一种递归的计算方式
并没有返回值

所以f(n)=f(n-1)*n 计算的时候,f(n-1)的值并没有被获取到
所以编译器误认为这是个等式

是么?
2015-09-01 22:22
计算机之祖
Rank: 2
等 级:论坛游民
帖 子:63
专家分:17
注 册:2015-9-1
收藏
得分:0 
回复 5楼 TonyDeng
意思是,在C中
只有定义的float\int\double等类型的变量才会分配有固定的地址空间
而函数f(n),是个临时变量,地址随时变动,所以不能作为左值
而作为右值,比如类似int a=f(b)的形式,是可以将临时变量f(b)正确赋值给a的
是吧
你写的好详细,很耐心,领教了!!
真的非常感谢!!
2015-09-02 11:57
快速回复:赋值语句,用“=”,提示non-lvalue in assiment,为什么?谁能帮忙看 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034341 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved