[英]This statement gives an error saying "Expression must be a modifiable lvalue"
我已經聲明了一個二維字符數組矩陣[][]。
char matrix[3][3] = {{' ', ' ', ' '},{' ', ' ', ' '},{' ', ' ', ' '}};
在 function vacantCenter() 中,如果 matrix[1][1] 存儲空格,我試圖返回 1,否則返回 0。
int vacantCenter()
{
int n;
(matrix[1][1] == ' ')? n = 1: n = 0;
return n;
}
一個簡單的 if 案例可以正常工作。 但是三元運算符顯示錯誤,說“表達式必須是可修改的左值”。 這些行有什么問題? (我正在使用 Visual Studio 2022;在 a.c 源文件中)
賦值運算符=
的優先級低於三元運算符?:
。
因此,您的表達式被解釋為:
((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;
}
由於它看起來matrix
是一個全局變量,你可以使用類似的東西:
#define VACANTCNTR (matrix[1][1] == ' ')
然后:
if( VACANTCNTR ) {
....
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.