0

我想知道,我将如何在代码中表达它?

rand() % 2 == 0 ? map[x][y] = 'm' : map[x][y] = 'M';

当我在 g++ 中编译该行时,它不会给出错误。然而 gcc 告诉我我需要一个左值赋值语句。我想也许我应该给他们一个整数

int i = rand() % 2 ? .......

但这也给了我一个错误。有人可以帮忙吗?谢谢

4

2 回答 2

1

(参见此处)从该帖子中接受的答案中,您可以在 C 中看到它的评估结果为:

((rand() % 2 == 0) ? map[x][y] = 'm' : map[x][y]) = 'M';

左边的陈述不是正确的 L 值。您可以将其重写为:

map[x][y] = rand() % 2 == 0 ? 'm' : 'M';
rand() % 2 == 0 ? (map[x][y] = 'm') : (map[x][y] = 'M'); // This should work in C, but I do not have gcc handy to verify
于 2013-09-28T17:47:27.353 回答
1

您需要一个左值才能按照您的方式使用表达式。它用于分配,例如:

bool isFull= (candiesEaten>10) ? true : false;

你写的是:

 if(rand() % 2 == 0){
     =map[x][y] = 'm';
 }else{
     =map[x][y] = 'M';
 }

我希望你明白这一点。更一般的格式是:

 lvalue= (statement)? val1 : val2;

它实际上是:

if(statement){
    lvalue= val1;
}
else{
    lvalue= val2;
}
于 2013-09-28T18:11:55.617 回答