【问题标题】: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'。但它似乎不是那样的。请帮助我了解这个错误的原因是什么。

【问题讨论】:

    标签: c arrays char lvalue


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      'a' || a[i]
      

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

      【讨论】:

        猜你喜欢
        • 2013-09-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-18
        • 2017-04-08
        • 2022-12-22
        • 2019-09-10
        • 2011-11-06
        相关资源
        最近更新 更多