我想知道,我将如何在代码中表达它?
rand() % 2 == 0 ? map[x][y] = 'm' : map[x][y] = 'M';
当我在 g++ 中编译该行时,它不会给出错误。然而 gcc 告诉我我需要一个左值赋值语句。我想也许我应该给他们一个整数
int i = rand() % 2 ? .......
但这也给了我一个错误。有人可以帮忙吗?谢谢
我想知道,我将如何在代码中表达它?
rand() % 2 == 0 ? map[x][y] = 'm' : map[x][y] = 'M';
当我在 g++ 中编译该行时,它不会给出错误。然而 gcc 告诉我我需要一个左值赋值语句。我想也许我应该给他们一个整数
int i = rand() % 2 ? .......
但这也给了我一个错误。有人可以帮忙吗?谢谢
(参见此处)从该帖子中接受的答案中,您可以在 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
您需要一个左值才能按照您的方式使用表达式。它用于分配,例如:
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;
}