我有一个简单的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)
我知道它的一些非常简单,但答案现在逃脱了我.
的=(分配)运算符是不一样的==(equality)运算符.
这条线:
while(currentuser = -1){
Run Code Online (Sandbox Code Playgroud)
首先分配-1给currentuser,然后检查是否currentuser具有非零值.这将始终是case(-1 != 0),因此循环永远不会结束.
你的意思可能是:
while(currentuser == -1){
Run Code Online (Sandbox Code Playgroud)
其比较currentuser向-1,并且只要该比较结果为true继续循环.
你需要改变:
while(currentuser = -1){
Run Code Online (Sandbox Code Playgroud)
成为:
while(currentuser == -1){
Run Code Online (Sandbox Code Playgroud)
目前currentuser,-1每次循环运行时都要分配,而不是检查它是否仍然分配给该值.