Closed. This question is not reproducible or was caused by typos。它当前不接受答案。












想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。

在8个月前关闭。



Improve this question




我想进行编码,例如输入您的用户名和密码,然后它将告诉您成功与否。

这是我的代码:
#include<iostream>
using namespace std;
int main()
{
    const int USR = 201910, PSW = 765705590;
    int user, psw;
    cout << "user:";
    cin >> user;
    cout << "password:";
    cin >> psw;
    if(user == USR && psw = PSW) // 2 errors: 1. E1037 expression must be a modifiable lvalue 2. '='left operand must be l-value
    {
        cout << "welcome to US bank!";
    }
    else if (user != USR || psw != PSW)
    {
        cout << "password  or username is wrong!";
    }
}

我是C++的使用者,能否帮助我找出这两个错误?谢谢!

最佳答案



错误在这里:psw = PSW
经过operator precedence
user == USR && psw = PSW
变成
((user == USR) && psw) = PSW
现在查看((user == USR) && psw)。您认为该表达式的结果是什么?它是truefalse,不是左值。

What are rvalues, lvalues, xvalues, glvalues, and prvalues?

简单来说,您将PSW分配给什么?这是没有意义的,因为该表达式的LHS不是变量。

解决方案:

您可能会对这些错误感到惊讶,因为您实际上只是想比较psw是否等于PSW,但是您不小心使用了该赋值运算符。

psw = PSW替换psw == PSW

关于c++ - C++ E0137表达式必须为可修改的左值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60996503/

10-12 01:30