代码就像这样
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a[]={10,20,30,40,50};
int j;
for(j=0;j<5;j++)
{
printf("%d\n",*a);
a++;
}
return 0;
}
输出 -
错误 - :Lvalue需要作为递增操作数
为什么Lvalue错误发生在这里?
答案 0 :(得分:3)
++
的操作数必须是可修改的左值。
来自C11
,章节§6.5.2.4
后缀增量或减量运算符的操作数应具有原子的,合格的, 或不合格的真实或指针类型,应为可修改的左值。
数组名称不是可修改的左值。因此,它不能用作++
的操作数。
添加,引用C11
,章节§6.3.2.1
[...] 可修改的左值是一个左值 没有数组类型,没有不完整的类型,没有constqualified 类型,如果是结构或联合,则没有任何成员(包括, 递归地,所有包含聚合或联合的成员或元素)具有constqualified 类型。
答案 1 :(得分:2)
您无法增加数组的名称。你是否已经完成了以下工作,你可以使用指针进行处理:
int main()
{
int a[]={10,20,30,40,50};
int *b= a;
int j;
for(j=0;j<5;j++)
{
printf("%d\n",*b);
b++;
}
return 0;
}
答案 2 :(得分:0)