在后增加左值误差

时间:2014-02-22 06:25:37

标签: c++ c

int main()
{
    int[] x={1,2,3,4,5};
    printf("%d",x);
    printf("%d",*x);
    printf("%d",++*x);
    printf("%d",*x++);   //Here Lvalue required erroe  is genrerated
}

有人可以解释一下这个错误是什么意思以及为什么会在这里生成

5 个答案:

答案 0 :(得分:0)

在c / c ++中声明数组的正确方法是:

int x[]={1,2,3,4,5};

错误是因为你不能在数组上使用++

答案 1 :(得分:0)

您无法增加数组。

*x++*(x++)相同。也许你想要(*x)++而不是?

答案 2 :(得分:0)

在此声明中:

printf("%d",*x++); 

您正在将++运算符应用于数组本身,这是不可能的。这会给你lValue错误。

或者,在这一个:

printf("%d",++*x);

您正在将++运算符应用于数组指向的(它的第一个元素),这当然可以正常工作并打印下一个元素的值。

尝试

printf("%d",(*x)++); 

答案 3 :(得分:0)

您无法增加数组。试试这个:

int main()
{
    int x[]={1,2,3,4,5};
    printf("%d",x);
    printf("%d",*x);
    printf("%d",++*x);
    int *y=x;
    printf("%d",*y++); //you can increment a pointer though
}

答案 4 :(得分:-1)

没关系,数组中的增量没有意义。但是数组只是一个指针变量。我的意思是如果我在程序中打印x的值(这是一个数组),它将打印一个[0]的地址。这意味着它是指向[0]的指针。所以我可以在一个简单的指针变量上使用增量那为什么我不能对数组指针使用递增运算。