error C2106: "=": 左操作数必须为左值

代码如下:
#include "stdafx.h"
#include "iostream"
using namespace std;
int fib(int a);
void _tmain(int argc, _TCHAR* argv[])
{
int m;
cout<<"请输入一个数";
cin>>m;
fib(m);

}

int fib(int n){

if(n==0||n==1){
fib(n)=1;}
while(n>=2){
return fib(n-1)+fib(n-2);
}
}

fib(n)=1;这里错了。不能给函数赋值。追问

恩?那要怎么改?

追答

你这是算斐波那契数列和呢吧。应该改成return 1;

追问

是斐波那契数列,改完了但是貌似还有问题

追答

还有什么问题?

追问

这个递归好像没有终止啊?一直在运行

追答

你是不是输入的数字太大了?我这里调试运行成功了。可以求出数列第m个数。

追问

不会啊,我就输了4和5,都输不出来

追答

我这儿完全没问题。

对了,我把 fib(m);改成了cout<<fib(m);用于输出这个数字。

追问

我也照着改了,怎么不行撒?

追答

#include "stdafx.h"
#include "iostream"
using namespace std;
int fib(int a);
void _tmain(int argc, _TCHAR* argv[])
{
int m;
cout>m;
cout=2){
return fib(n-1)+fib(n-2);
}
}

那就很奇怪了。我就改成是这样的。

追问

是啊,一样的啊,则么回事?

追答

那这个很奇怪了。我的编译环境是xp TC++3.0

温馨提示:内容为网友见解,仅供参考
无其他回答

error C2106:'=': left operand must bel- value是什么问题啊?_百度...
error C2106: '=' :left operand must be l-value 表示等号左边必须为一个左值,该处错误为等号左边为*p+i\\j是表达式,不是一个左值。问题分析 C语言的符号优先级表格(部分)如下表:由该表格可知取值符 * 运算优先级高于加法运算符 +,因此 *p+i 和 *p+j 的运算均为先取值再加上变量,结果...

error C2106: “=”: 左操作数必须为左值
你这条语句出错了,p.getFirst()=temp1、p.getSecond()=temp2; p.getSecond()返回的是一个临时变量,并不能存储temp2的拷贝。顺便举个例子,左值相当于汇编的 mov ax, 3; 在逗号左边的叫左值。由于左值是临时变量,不是能存储对象的地方,所以编译出错。

error C2106: "=": 左操作数必须为左值
fib(n)=1;这里错了。不能给函数赋值。

C语言的编译过程中error C2106 是指多少行多少列出错了?谢谢!
这个只是一个错误消息,你双击这行就可以到达错误的位置。错误类型:“operator”: 左操作数必须为左值 该运算符必须将左值作为其左操作数。比如给常量赋值:1 = a;

error C2106: “=”: 左操作数必须为左值
x[],STU *y) {int i;*y = x[0]; \/\/ 结构变量可以直接赋值for(i = 1 ;i < N; i++) {if(x[i].score < y->score)*y = x[i];}}int main() {STU students[N]={{"A01",81},{"A02",89},{"A03",66},{"A04",87},{"A05",77},{"A06",90},{"A07",79},...

error C2106: "=": 左操作数必须为左值
fib(n)=1;这里错了。不能给函数赋值。

错误error C2106: “=”: 左操作数必须为左值 代码如下 我刚开始学c...
字符串数组不能用=来赋值

error C2106: '=' : left operand must be l-value
由于你定义了typedef int ElemType[N];所以 typedef struct{ ElemType data;int cur;} 中的data是数组。数组不能直接赋值,需要使用循环或者memcpy。所以这句space[i].data=b;修改为:memcpy(space[i].data,b,sizeof(b)*N);修改后还是无法运行,只是解决编译问题。你还有其它运行错误。

C语言出错,错误提示:error C2106: '=' : left operand must be l...
error必须修改,而部分warning可以不做修改。2、C2106: 这个是VC\/VS自行定义的一个错误编号。每种错误编号代表一种错误类型,有着对应的具体提示。3、'=' : left operand must be l-value。这个就是具体的出错信息提示了。也是最有用的一部分。 这句表示=的左值必须是可赋值的左值。二、出错原因。

error C2106: “=”: 左操作数必须为左值
数组是不能直接赋值的,需使用头文件string.h里的strcpy函数对其复制。另外汉字占2个字节,而'\\0'还要占一个字节,所以sky1数组的大小是3个字节 你定义的sky数组至少应是3个字符大小的空间 include<string.h> char sky[3];char sky1[]={"甲"};strcpy(sky,sky1);...

相似回答