You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用三元运算符时出现“Expression must be a modifiable lvalue”错误求助

三元运算符报错“Expression must be a modifiable lvalue”的原因及解决办法

你声明的二维字符数组:

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

在vacantCenter()函数中使用三元运算符判断中心位置是否为空时触发错误,而if语句可以正常运行,问题出在运算符优先级上。

C语言里,三元运算符?:的优先级高于赋值运算符=,你写的代码:

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

会被编译器解析成:

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

三元表达式的计算结果是一个右值(无法被赋值的表达式),你试图把0赋值给这个右值,就会触发“Expression must be a modifiable lvalue”的错误。

两种解决办法:

  • 给赋值表达式加括号,强制改变运算优先级:
(matrix[1][1] == ' ') ? (n = 1) : (n = 0);
  • 直接返回三元表达式的结果,省去中间变量n,代码更简洁高效:
int vacantCenter()
{
    return (matrix[1][1] == ' ') ? 1 : 0;
}

内容的提问来源于stack exchange,提问作者Vineeth bharadwaj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 23:09:33