我只是在想什么。我有以下代码:
#include <iostream>
using namespace std;
int main()
{
int number, largest, counter = 1;
while (counter <= 10)
{
cout << "Enter a number: ";
cin >> number;
if (counter = 1)
{
largest = number;
}
else if (number > largest)
{
largest = number;
}
counter++;
}
cout << "\n\nThe largest number is: " << largest;
system("pause");
return 0;
}
问题是,它永远不会终止。我确实设法通过稍微修改代码来解决问题,但我想知道为什么会发生这种情况。这是固定代码:
#include <iostream>
using namespace std;
int main()
{
int number, largest, counter = 1;
cout << "Enter a number: ";
cin >> number;
largest = number;
while (counter < 10)
{
cout << "Enter a number: ";
cin >> number;
if (number > largest)
{
largest = number;
}
counter++;
}
cout << "\n\nThe largest number is: " << largest << endl;
system("pause");
return 0;
}
似乎在删除else if语句后它起作用了。发生了什么事?
答案 0 :(得分:8)
if (counter = 1)
这应该是
if (counter == 1)
否则,您将在每次迭代时将计数器重置为1。
答案 1 :(得分:4)
一个常见的错误:
if( counter = 1) // assignment operator
这将在每次迭代时将counter
的值设置为1
,并且循环永远不会完成。
你应该使用
if( counter == 1) // equality operator
^^^^
这正是你的意思
答案 2 :(得分:4)
if (counter = 1)
重新分配1来计算每个循环,这始终是< 10
。
您想要if (counter == 1)
。
答案 3 :(得分:3)
if (counter = 1)
这不会与counter
和1
进行比较,它会将1
分配给counter
,然后检查counter
- 我们设置为1
所以它总是积极的,永远是<= 10
。
答案 4 :(得分:1)
该行
if (counter = 1)
应该是
if (counter == 1)
因为你想比较,而不是分配价值。
答案 5 :(得分:1)
你的第一个例子是
if (counter = 1)
而不是
if (counter == 1)
因此if语句会在每次迭代期间将计数器重置为1。
答案 6 :(得分:0)
另见通知,这是一个常见的错误。您可以通过键入
来避免它if( 1 == counter )
而不是
if( counter == 1 )
因为
if( 1 = counter )
无法编译(如果您输入错误并忘记了'=')。
答案 7 :(得分:0)
你的问题在这里:
if (counter = 1)
分配而不是比较。编译具有更高的警告级别。
答案 8 :(得分:0)
if (counter = 1)
因此,counter
值永远为1。
答案 9 :(得分:0)
您将1分配给计数器而不是比较它,使用==而不是=