Expression must be a modifiable lvalue error in this code的原因是啥?

Posted

技术标签:

【中文标题】Expression must be a modifiable lvalue error in this code的原因是啥?【英文标题】:What's the reason for Expression must be a modifiable lvale error in this code?Expression must be a modifiable lvalue error in this code的原因是什么? 【发布时间】:2015-03-06 05:07:28 【问题描述】:

我是 C 新手,正在学习 char 数组。这是我的代码-

#include <stdio.h>
int main()

    char a[4];
    int i = 1;
    if (a[i] = 'a' || a[i] = 'e')

    printf("%c", a[i]);

    return 0;

每当我尝试在 if 语句中分配两次 char 数组时,编译器都会给出错误:表达式必须是可修改的 lvale。我不明白这个错误的原因是什么。我认为在 if 语句中,首先 a[i] 将被分配一个值 'a' 然后最后是 'e'。但它似乎不是那样的。请帮助我了解这个错误的原因是什么。

【问题讨论】:

【参考方案1】:

(a[i] = 'a' || a[i] = 'e') 将被解析为(a[i] = ('a' || a[i]) = 'e'),因为|| 的优先级高于= 运算符。 || 运算符返回01,它们是右值且不可赋值。无法分配 0 = 'e'1 = 'e'

【讨论】:

【参考方案2】:

运算符优先级。 = 的优先级低于 ||

'a' || a[i]

1,它不是可修改的左值。

【讨论】:

以上是关于Expression must be a modifiable lvalue error in this code的原因是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Expression must be a modifiable lvalue error in this code的原因是啥?

C语言错误:expression must be a modifiable lvalue

Super expression must either be null or a function, not undefined

verilog 中编译错误:port must be connected to a structural net expression

The expression being assigned to optional parameter `v2' must be a constant or default value(示例代

KEIL4里面#137expression must be a modifiable lvalue问题