错误左值需要作为赋值 C++ 的左操作数

Error lvalue required as left operand of assignment c++

整个程序基本上只允许用户移动光标,如果用户在给定的坐标范围 (2,2) 内,则允许用户键入输入。我刚刚提供了一些我认为足以解决问题的代码。

我不知道是什么原因造成的problem.Can你也解释一下为什么会这样!!

void goToXY(int ,int);

创建了一个包含两个整数的函数。

int X = 0, Y = 0;

初始化了两个整数。

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);
}

这是我定义函数的地方(在上面)

问题出在这个if语句

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 );

您也可以在提供另一个默认参数的块作用域中重新声明该函数。

您遇到以下问题:

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

因为你用错了运算符(=,不是==),所以2 && Y的优先级变多了。这被评估为:

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

如果为真,将简化为:

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

由于 true=2 这没有意义。修正代码为:

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