编译提示 lvalue required as increment operand 的问题分析
字面意思是提示我们代码中的左值应该是一个可以增加(或减少)的一个操作数,即左侧被赋值的数应该是一个变量,不能是常量。原因也很简单:我们在对某一个值进行自增或自减的操作时,希望保留的是计算后的值,变量可以很容易地在原始地址上保留计算后的值,而常量则不能被自增自减所修改,故出此错误。
C语言中的常量主要有整型常量(int a = 0;),字符型常量( char b = “c”;),实型常量(double d = 2e3f;),除了这些显而易见的常量,还有一些容易被忽略的,譬如:任一类型的数组的首地址,函数地址。
以下操作是不被允许的:
1,
int a[8]={1,2,3,4,5,6,7,8};
a++;
++a;
a--;
--a;
2,
int fun()
{
return 0;
}
++fun();
千万不要想写骚代码而犯了这样的错~
此外,向数组名赋值的操作( a += 1 )会引起另外的错误: assignment to expression with array type