C++ 为什么在 if 为真之后运行 else if

Lug*_*ker 1 c++ if-statement

using namespace std;
int main(){
    int userinp=-1,dig1=0,dig2=0,dig3=0,dig4=0;
    while(userinp!=0) {
        cin>>userinp;
        if (userinp=0) userinp=0;
        else if(userinp<0||userinp>9999) cout<<"Wrong input";
        else if (userinp<10) { dig1++; userinp =-1;}
        else if (userinp<100) {dig2++; userinp =-1;}
        else if (userinp<1000) {dig3++; userinp =-1;}
        else {dig4++; userinp =-1;}
    }
    cout<<dig1<<endl<<dig2<<endl<<dig3<<endl<<dig4;
    return 0;
    }
Run Code Online (Sandbox Code Playgroud)

我正在尝试教科书上的一个练习,但它陷入无限循环,因为它else if userinp<10在我输入 0 时运行。为什么?如果我在 if 退出后删除部分。

ali*_*ift 5

您在 if 条件部分中放置了赋值 (=) 而不是等号检查 (==)。

改变这一行:

if (userinp=0) userinp=0;
Run Code Online (Sandbox Code Playgroud)

对此

if (userinp==0) userinp=0;
Run Code Online (Sandbox Code Playgroud)

你应该很好。

祝你好运