编译显示[Error] lvalue required as increment operand

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编译显示[Error] lvalue required as increment operand相关的知识,希望对你有一定的参考价值。

代码是这样的:
int search(struct BTree* n,int r)

if(n->id==r)
return 0;
else

if(n->right!=NULL)

if((n->right)->data>(n->left)->data)

n=n->right;
return ++search(n,r);

else

n=n->left;
return ++search(n,r);


else

n=n->left;
return ++search(n,r);


在++search(n,r)处报错,为什么?这个函数的返回值是整型啊?

这两个运算符C语言提供的增1运算符和减1运算符,它们都是单目运算符,只需要一个操作数,但操作数只能是变量,不能是常量或表达式。至于你说的它们的使用形式,只能跟一个变量搭配使用,作前缀运算符或后缀运算符,但是只要是变量就行。记住它们的作用是使变量的值增加1 个单位或减少1个单位,而并是单纯意义上的加1或减1。在下才疏学浅,还请楼主客观采纳。 参考技术A 等号左边能变量表达式写size[i]=&value_number

C语言中的 error: lvalue required as left operand of assignment

部分代码如下: x.c: PAIR(*p,*q).max=INT_MAX; //error: lvalue required as left operand of assignment x.h: #define PAIR(x,y) ((x) <= (y) ? H2Cost[(x)][(y)-(x)] : H2Cost[(y)][(x)-(y)]) x.c: static cost_t ** H2Cost; x.h: struct cost_s unsigned long plus; unsigned long max; cost_s; typedef struct cost_s cost_t;

参考技术A C语言的赋值必须是左值的,也就是左边必须是变量,不能是表达式的
你的PAIR(*p,*q).max是表达式,它不能再用=赋值的

以上是关于编译显示[Error] lvalue required as increment operand的主要内容,如果未能解决你的问题,请参考以下文章

这个C编译错误提示啥意思。。。lvalue required as left operand of assignment

单片机keil编译代码时报错error C213: left side of asn-op not an lvalue

lvalue required in function main错误是啥意思?

C 语言如图选中行,提示lvalue required as unary '&' operand

[c]调试程序中Lvalue required这句话是啥意思?

lvalue require as increment operand