c++要求左值作为赋值的左操作数

Error lvalue required as left operand of assignment c++

本文关键字:赋值 操作数 c++      更新时间:2023-10-16

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

我不知道是什么引起这个问题的。你能解释一下为什么会这样吗!!

void goToXY(int ,int);

创建了一个带有两个int型的函数。

int X = 0, Y = 0;

初始化了两个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);
}

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

问题出在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;
}