[英]comparing two variables in c++
学习 c++ 并且我确定我忽略了一些明显的东西,但我不确定为什么我没有收到i == j的消息,即使在第 3 次迭代之后数字是相同的?
这是 output:
8 不等于 12
9 不等于 11
感谢任何提示!
#include<iostream>
int main(){
int i=8;
int j=12;
for (i,j; i!=j; ++i, --j)
{
if (i == j)
{
std::cout << "i = j" << "\n"; // this part doesnt work
break;
}
else
std::cout << i <<" is not equal to " << j <<"\n";
}
}
由于条件,仅当i
不等于j
时才执行循环
for (i,j; i!=j; ++i, --j)
^^^^
当i
等于j
时,循环体不会获得控制,因为条件评估为false
。
您应该更改循环中的条件。 break
语句也是多余的。
这是一个演示程序。
#include <iostream>
int main()
{
for ( int i = 8, j = 12; not ( j < i ); ++i, --j )
{
if ( i == j )
{
std::cout << "i = j" << "\n";
}
else
{
std::cout << i <<" is not equal to " << j <<"\n";
}
}
}
它的 output 是
8 is not equal to 12
9 is not equal to 11
i = j
请注意,在任何情况下,一般情况下您都不能在循环中使用条件i != j
,因为当此范围包含偶数个值时,您可以获得无限循环。 例如,考虑i
等于10
且j
等于11
的情况。 在这种情况下,在循环的第一次迭代之后, i
将等于11
, j
将等于10
,并且再次i != j
.:)
您可以使用 for (; i <= j; ++i, --j)
。
以下是您的代码的修改版本,只是从!=
更改为<=
:
#include <iostream>
int main()
{
int i = 8;
int j = 12;
for (; i <= j; ++i, --j)
{
if (i == j)
{
std::cout << "i = j" << std::endl;
}
else
std::cout << i << " is not equal to " << j << "\n";
}
return 0;
}
Output:
8 is not equal to 12
9 is not equal to 11
i = j
那是因为你的循环在i
等于j
时停止,然后才打印出来。 而且由于当i
应该等于j
时您会跳出循环,因此您可以像这样重写它:
for (int i = 8, j = 12; i != j; ++i, --j)
std::cout << i << " is not equal to " << j << "\n";
std::cout << "i = j\n";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.