c - 需要左值作为增量运算符

标签 c compiler-errors lvalue

<分区>

我在这段代码中遇到了与左值相关的错误:

#include <stdio.h>
#include<string.h>

main()
{
  int a[]={10,20,30,40,50};
  int j;
  for(j=0;j<5;j++)
  {
     printf("%d\n",a);
     a++;
  }
  return 0;
}

显示的错误是:

lvalue is required as an increment operator.

为什么会出现这个问题? 任何帮助将不胜感激。

最佳答案

您正在尝试递增 int[] 变量,但这种变量不支持递增运算符。

如果您尝试遍历数组,您只需要将用作循环条件的变量与下标运算符一起使用:

for (int j = 0; j < 5; ++j)
  printf("%d\n",a[j]);

主要问题是 ++x 运算符在语义上等同于 x = x + 1, x。这要求 x 是可分配的 ( lvalue )(因为您为其分配了一个新值)但数组不可分配。

关于c - 需要左值作为增量运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24477066/

相关文章:

c- 套接字上的 HTTP 服务器无法正确显示图像

c - printf 语句中用于宽度和精度的子说明符

android - 当我尝试在SQLite中运行提交数据的应用程序时,出现错误1语法错误

c++ - 有没有办法在 C++ 中通过引用传递右值?

c++ - 左值和文字之间的比较是否会引发左值到右值的转换?

c - 在 C 中发出返回字符串位置

c++ - 错误C2664 : 'CSchemaString::CSchemaString(LPCTSTR)' : cannot convert parameter 1 from 'int' to 'LPCTSTR' [closed]

java - 使用javac在终端中编译Java程序时出错

c++ - 为什么这些代码仍然使用左值函数?

c - 如何为 GCC 代码指定手动重定位?