gpt4 book ai didi

c++ - 请协助 : "if" statement in C++

转载 作者:太空狗 更新时间:2023-10-29 20:43:09 26 4
gpt4 key购买 nike

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

控制台输出如下:

The product abc = 31875000

a = 200, b = 375, c = 425

The product abc = 31875000

a = 375, b = 200, c = 425

Loop terminated

最佳答案

您的break 仅跳出内部 循环,因此外部循环继续执行。

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

我还会完全消除 c 的循环。 c 唯一有意义的值是 1000 - (a+b),因此您最好直接计算它,而不是循环遍历 500 个不同的值来找到它。

关于c++ - 请协助 : "if" statement in C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16139734/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com