什么叫做C2106“=”:左操作数必须为左值编写VC程序的时候,给我报的错误 错误语句为 router1[0].data=ip[i].data; 前面和后面都是一个结构体 相关知识点: 试题来源: 解析 是不是赋值号左右 一边是指针,一边是数值? router1 声明的是结构体数组? data 声明的是什么,如果是 char 数组 也不能赋值? 总之,...
这里我们看左值,是1是常量,这里就会有问题了,编译会报错!因为常量不可被修改、不可以被赋值!所以大家可能会听过或见过”可修改/不可修改的左值”。 3.数组名做左值和右值的区别: 例如有字符数组char a[100]; 当a做右值时候,我们可以把它赋给char *类型的指针,用来指向这个数组,这种情况下数组名做右值代表该...
原文地址 在C语言学习过程中,大家或许听到过左值和右值的概念,甚至在调试程序时编译器也会给出” left operand must be l value ” 即左操作数必须为左值!今天我们将为大家详细解释这两个词,以及两者的区别! 简单而言,在赋值运算符“=”左边的就是左值,在赋值运算符
所谓左值是指一个能用于赋值运算左边的表达式。左值必须能够被修改,不能是常量。我们用变量作左值,还可以看到,指针和引用也可以作左值。改成b=9-c。一般形式为:变量=表达式。它的作用是将一个表达式的值赋给一个左值。计算赋值运算符右侧表达式的值(“=”为赋值运算符),将赋值运算符右侧表达式的...
在C语言学习过程中,大家或许听到过左值和右值的概念,甚至在调试程序时编译器也会给出” left operand must be l-value ” 即左操作数必须为左值!,今天我们将为大家详细解释这两个词,以及两者的区别! 简单而言,在赋值运算符“=”左边的就是左值,在赋值运算符“=”后边的就是右值,感觉像是废话,但非常好理解。
“left operand must be l-value”的意思是左操作数必须是左值。左值(l-value):出现于“=”左边的标识符。(为变量)。右值(r-value):出现于“=”右边的标识符。(变量或表达式)。表达式:产生确定不变的值。类似于a1x^n + a2x^n-1 +...+ an多项式(n>=1)。p+i 是一个表达式,是...
这个是之前讲过的典型错误,把==错误地写成了=。幸运的是,这一次编译器报错了。一般如果左边是个变量名的话,编译器不会报错,那这样的错误就会隐藏的比较深。这个编译器的错误提示告诉我们,赋值运算符=的左操作数必须是一个左值,而上面的year%4=0这个赋值表达式的左边是表...
同样,在 CRM 描述的C语言中,“.”运算符的左操作数被要求必须是一个左值,这也是它与“->”运算符不同的原因,如上所述。请注意,CRM 不需要“.”运算符的左操作数是结构体类型的,它只要求左操作数是左值。 这里读者应该区分“左操作数”和“左值”。
解释:赋值号(‘=’)左边的操作数必须是一个左值。通俗的说:左值就是可以改变的值的变量。发生这个错误的原因是你把常量(或不可改变值的变量)放到了赋值号的左边。例如:int a[3];a++;//这里就相当于a=a+1;注意a是数组a[3]的首地址,在声明a[3]后,将开辟一段连续内存空间。就是这段...
你这条语句出错了,p.getFirst()=temp1、p.getSecond()=temp2; p.getSecond()返回的是一个临时变量,并不能存储temp2的拷贝。顺便举个例子,左值相当于汇编的 mov ax, 3; 在逗号左边的叫左值。由于左值是临时变量,不是能存储对象的地方,所以编译出错。