代码之家  ›  专栏  ›  技术社区  ›  Vineeth bharadwaj

该语句给出了一个错误,即“表达式必须是可修改的左值”

  •  0
  • Vineeth bharadwaj  · 技术社区  · 3 年前

    我声明了一个二维字符数组矩阵[][]。

    char matrix[3][3] = {{' ', ' ', ' '},{' ', ' ', ' '},{' ', ' ', ' '}};
    

    int vacantCenter()
    {
       int n;
       (matrix[1][1] == ' ')? n = 1: n = 0;
       return n;
    }
    

    1 回复  |  直到 3 年前
        1
  •  3
  •   MikeCAT    3 年前

    这个 precedence = 低于三元运算符 ?: .

    因此,您的表达被解释为:

    ((matrix[1][1] == ' ')? n = 1: n) = 0;
    

    添加括号使其生效:

    (matrix[1][1] == ' ')? n = 1: (n = 0);
    

    vacantCenter 可以写成:

    int vacantCenter()
    {
       return matrix[1][1] == ' ';
    }
    

    或者(如果您对 ==

    int vacantCenter()
    {
       return matrix[1][1] == ' ' ? 1 : 0;
    }
    
    推荐文章