请协助:C++中的"if"语句

mon*_*o76 3 c++ if-statement conditional-statements

以下代码打印相同的结果 - 两次(!)(使用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;
}
Run Code Online (Sandbox Code Playgroud)

控制台输出如下:

产品abc = 31875000

a = 200,b = 375,c = 425

产品abc = 31875000

a = 375,b = 200,c = 425

循环终止

Jer*_*fin 5

break唯一突破循环,所以外循环继续执行.

一种可能性是将该代码移动到单独的函数中,并在第一次找到匹配时从函数返回.然后(除非你再次调用该函数)该代码的执行将完全停止.

我也c完全消除了循环.唯一有意义的值c1000 - (a+b),所以你也可以直接计算它,而不是循环遍历500个不同的值来找到它.