Closed. This question is not reproducible or was caused by typos。它当前不接受答案。
想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。
在8个月前关闭。
Improve this question
我想进行编码,例如输入您的用户名和密码,然后它将告诉您成功与否。
这是我的代码:
我是C++的使用者,能否帮助我找出这两个错误?谢谢!
想改善这个问题吗?更新问题,以便将其作为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)
。您认为该表达式的结果是什么?它是true
或false
,不是左值。
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