作为赋值c ++的左操作数所需的错误左值

Dew*_*pta 0 c++ if-statement lvalue conditional-statements

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

我不知道造成这个问题的原因.你也可以解释为什么会这样!

void goToXY(int ,int);
Run Code Online (Sandbox Code Playgroud)

创建了一个具有两个整数的函数.

int X = 0, Y = 0;
Run Code Online (Sandbox Code Playgroud)

初始化两个整数.

if(X = 2 && Y = 2){
    cin >> input;
}
Run Code Online (Sandbox Code Playgroud)

这是错误的地方(它在上面)

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

    COORD c;
    c.X = x;
    c.Y = y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), c);
}
Run Code Online (Sandbox Code Playgroud)

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

Vla*_*cow 6

问题出在这个if语句中

if(X = 2 && Y = 2){
    cin >> input;
}
Run Code Online (Sandbox Code Playgroud)

条件被解释为

if(X = ( 2 && Y ) = 2){
    cin >> input;
}
Run Code Online (Sandbox Code Playgroud)

我想你的意思是

if(X == 2 && Y == 2){
    cin >> input;
}
Run Code Online (Sandbox Code Playgroud)

考虑到最好在函数声明中包含默认参数而不是函数定义,因为通常它是在编译单元中可见的声明.

例如

void goToXY( int = 0, int = 0 );
Run Code Online (Sandbox Code Playgroud)

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