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