一个简单的C++ While循环不起作用

Nic*_*ick 4 c++ while-loop

我有一个简单的while循环我正在尝试实现但是对于我的生活无法弄清楚我缺少什么.我有currentuser初始化在顶部-1

while(currentuser = -1){
    cout << "Enter user ID: ";
    cin >> id;
    currentuser = search(a, length, id);
}
Run Code Online (Sandbox Code Playgroud)

我的搜索功能是这样的:

int search (User a[ ], int length, string userID){
    User u;
    string tempid;
    int templegnth; //I ignore length for now as I will use it later
    for(int i=0; i<50; i++){
        tempid = a[i].getID();
        templegnth = tempid.length();
        if((tempid == userID)){
            return i;
        }
    }
    return -1;


}
Run Code Online (Sandbox Code Playgroud)

我知道它的一些非常简单,但答案现在逃脱了我.

San*_*ker 7

=(分配)运算符是不一样的==(equality)运算符.

这条线:

while(currentuser = -1){
Run Code Online (Sandbox Code Playgroud)

首先分配-1currentuser,然后检查是否currentuser具有非零值.这将始终是case(-1 != 0),因此循环永远不会结束.

你的意思可能是:

while(currentuser == -1){
Run Code Online (Sandbox Code Playgroud)

其比较currentuser-1,并且只要该比较结果为true继续循环.


tho*_*edb 6

你需要改变:

while(currentuser = -1){
Run Code Online (Sandbox Code Playgroud)

成为:

while(currentuser == -1){
Run Code Online (Sandbox Code Playgroud)

目前currentuser,-1每次循环运行时都要分配,而不是检查它是否仍然分配给该值.