2016-09-02 9 views
0

プログラム全体で基本的にはカーソルを移動することができます。ユーザーが指定された座標範囲(2,2)にある場合、ユーザーは入力を入力できます。私は問題を解決するのに十分であると思ったコードの一部を提供しました。エラー左辺値は代入の左オペランドとして必要です。++

この問題の原因はわかりません。どうしてそれが起こっているのか説明できますか?

void goToXY(int ,int); 

2つのintを持つ関数を作成しました。

int X = 0, Y = 0; 

2つのintを初期化します。

if(X = 2 && Y = 2){ 
    cin >> input; 
} 

エラーがある場所です(それは上記です)

void goToXY(int x = 0, int y = 0) { 

    COORD c; 
    c.X = x; 
    c.Y = y; 
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), c); 
} 

私は関数を定義するのはここだ(それは上記です)

+2

エラーを再現するためには、[MCVE]をご用意ください。 –

+1

'if(X == 2 && Y == 2){' –

+0

Boのコメントを少し明確にする。あなたの 'X = 2'は値2をXに代入して2と比較しようとしません。' == 'を使う必要があります。 – Hayt

答えて

6

声明

if(X = 2 && Y = 2){ 
    cin >> input; 
} 
場合、問題は、この中にあります

条件は次のように解釈されます

if(X = (2 && Y) = 2){ 
    cin >> input; 
} 

は、私はあなたが通常それがコンパイル単位で表示されている宣言ですので、代わりに関数定義の関数宣言にデフォルト引数を含めるように優れていることを考慮してください

if(X == 2 && Y == 2){ 
    cin >> input; 
} 

を意味すると思います。

void goToXY(int = 0, int = 0); 

例えば

はまた、あなたは別のデフォルト引数を供給ブロックスコープの関数を再宣言します。

2

あなたはに問題があります。

if(X = 2 && Y = 2){ 
    cin >> input; 
} 

間違ったオペレータ(=、ない==)を使用しているので、その後、2 && Yの優先順位は、よりになります。

trueの場合に単純化する、
if(X = (2 && Y) = 2){ 
    cin >> input; 
} 

ため true=2の意味がありません
if(X = true = 2){ 
    cin >> input; 
} 

これは次のように評価されます。コードを次のように修正してください。

if(X == 2 && Y == 2){ 
    cin >> input; 
} 
関連する問題