コードでどのように表現すればよいのでしょうか。
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 ? .......
しかし、それも私にエラーを与えます。誰か助けてくれませんか?ありがとう
式を使用するには左辺値が必要です。次のような割り当てに使用されます。
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;
}
(こちらをご覧ください)その投稿で受け入れられた回答から、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