0

コードでどのように表現すればよいのでしょうか。

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

その行をg ++でコンパイルすると、エラーは発生しません。ただし、gcc は、代入ステートメントの左側に左辺値が必要だと教えてくれます。たぶん私は彼らに整数を与えるべきだと思いました

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

しかし、それも私にエラーを与えます。誰か助けてくれませんか?ありがとう

4

2 に答える 2

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 に答える
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 に答える