以下代码打印相同的结果 - 两次 (!)(使用 Microsoft Visual C++ 2010 IDE)。我还打印了每个变量的最终值以查看发生了什么,实际上有两组值满足if
语句条件。
我的问题是,因为指令是break;
如果条件评估为 TRUE,任何人都可以解释一下我是如何/为什么在我没有要求的情况下得到这两个结果的(不是说这是一件坏事,只是想理解)?这是if
构造的一部分还是与循环有关?如果条件不止一次评估为 TRUE,似乎某些东西知道返回多个解决方案,我只是不明白当指令没有明确说明这样做时它是如何做到这一点的(除非有内置的东西-我不知道)。
基本上,为什么循环没有在break;
满足条件后立即结束,或者我是否以错误的方式思考这个问题?
同样,如果有人知道或者我在这里遗漏了一些基本的东西,请告诉我!我是 C++ 新手,所以只是想学习,提前谢谢你。
这是代码:
#include "stdafx.h"
#include <iostream>
int main()
{
for (int a = 1; a < 500; ++a)
{
for (int b = 1; b < 500; ++b)
{
for (int c = 1; c < 500; ++c)
{
if ((a + b + c) == 1000 && ((a*a + b*b) == (c*c)))
{
cout << "The product abc = " << a*b*c << endl << "a = " << a << ", b = " << b << ", c = " << c << endl;
break;
}
}
}
}
cout << endl << "Loop terminated";
char d;
cin >> d;
return 0;
}
控制台输出如下:
产品 abc = 31875000
a = 200,b = 375,c = 425
产品 abc = 31875000
a = 375,b = 200,c = 425
循环终止