【问题标题】:in post increment Lvalue error [duplicate]在后增量左值错误[重复]
【发布时间】:2014-02-22 06:25:36
【问题描述】:
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
}

谁能解释一下这个错误的含义以及为什么会在这里产生

【问题讨论】:

  • 除其他错误外,您正在尝试递增数组。这没有任何意义。
  • 恭喜。您现在拥有自己的官方“这就是为什么数组和指针是相同的*代码示例,以面对那些声称它们是的人。这并不重要,因为无论如何你的语法都是错误的.int[] x 应该是int x[]。可能想在收起投球臂之前解决这个问题。
  • 我是一名java程序员。我前几天用c编程。我为什么手指仍然是面向java的。对不起我的错误。

标签: c++ c


【解决方案1】:

你不能增加一个数组。

*x++*(x++) 相同。也许你想要(*x)++

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

      在此声明中:

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

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

      或者,在这个:

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

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

      试试

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

      【讨论】:

      • 没关系,数组中的增量没有意义。但是数组只是一个指针变量。我的意思是,如果我在我的程序(它是一个数组)中打印 x 的值,它将打印 a[0] 的地址。这意味着它是指向 a[0] 的指针。所以当我可以在一个简单的指针变量上使用增量时那为什么我不能对数组指针使用增量操作。
      • 是的 同意你的看法
      • @amarnath.. 感谢您纠正我的帖子
      【解决方案4】:

      你不能增加一个数组。试试这个:

      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
      }
      

      【讨论】:

        【解决方案5】:

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

        【讨论】:

        • 这是因为数组不是指针,虽然它表现像一个指针。
        • 数组不是指针变量。但是,在某些表达式中使用时,它们会自动转换为指向其第一个元素的指针。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-07
        • 2014-12-09
        • 2012-11-19
        • 2013-06-15
        • 1970-01-01
        • 2012-10-01
        相关资源
        最近更新 更多