c - 为什么以下数组操作是非法的?

标签 c arrays

表达式x++;x*2;被报告为非法。编译器产生错误。但是,如果是 x+1;,则不会报告错误。

任何人都可以帮助我理解为什么特定的表达方式是非法的吗?或者,换句话说,为什么添加是合法的?

代码:

#include <stdio.h>
int main(void)
{ 
   int x[]={1,2,3,4,5};
   x++;
   x+1; 
   x*2;
}    

最佳答案

这三个语句中

x++;
x+1; 
x*2;

只有两条语句是非法的。本声明

x+1; 

是正确的。在这种情况下,在表达式中,数组指示符被转换为指向其第一个元素的指针。

没有为指针定义乘法运算符。所以这个说法

x*2;

非法。

数组是不可修改的左值。您不能更改数组指示符。所以这个说法

x++;

非法。

关于c - 为什么以下数组操作是非法的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44020006/

相关文章:

C 在手动填充的数组中搜索值

c - 具有特定格式的 Scanf

c++ - 找到质数?

c - 为什么我的输入通过管道发送到进程时会延迟?

python - Numpy:具有特定条件的线性系统。没有消极的解决方案

Javascript 正则表达式替换并添加找到的所有元素到数组

c - 当模块化 C 代码时,在一个函数中是否有一种方法可以循环到另一个函数(即我的 main() c 文件)?

c - mkdir 函数在 C 中不起作用

c - 将参数传递给函数指针数组

c# - 我想在 2 字节数组之间有一个扩展方法 "Equals"