同时评估条件
While-loop evaluation condition
对不起,如果这个问题似乎真的很琐碎,但是我只是在学习如何编码,这使我在计算机前呆了大约2个小时,而没有意识到为什么会发生这种情况。<<<<
我将通过下面的代码。因此,为了使其保持直接:
isprime((是一个功能,只需检查当前号是否是素数。
nprime((是一个返回n-主义素数的函数,将n作为参数。
关键点是主函数,更确切地说, number value 在>中首先while-loop 。
如果您运行此代码,则在达到 number 的最后一个质量数字时,它将输入无限循环。如果您只是将第一个更改为而(数字> 0( while(number> 1(。
那是我无法意识到的奇怪的事情:如果内部第二个while-loop 不会像 number%nprime(index(!= 0 一起退出,而的最后一个指令wirloop 是 number/= nprime(index(; ,该程序如何进入无限循环?
最后一个指令将数字的值设置为0,因此第一个wher-loop条件应返回 false 并退出循环。
我缺少什么?
谢谢大家的时间和耐心。
ps:我被投票下来了,我不知道为什么,所以我会澄清一下:
我已经完成了研究。据我所知,每个消息来源似乎都同意:
>条件在且仅当左操作数大于右操作数时返回true。
将我带到先前写的问题:如果 number 是等于 to 0,while-loop如何不评估 number> number> 0 作为 false 并从迭代中退出?
#include <iostream>
using namespace std;
bool isPrime(int);
int nPrime(int);
int main() {
int number = 264;
if (number > 0)
{
int index = 1;
while(number > 0)
{
while (number % nPrime(index) != 0)
{
index++;
}
cout << nPrime(index) << endl;
number /= nPrime(index);
}
}
else
cout << "Error";
return 0;
}
bool isPrime(int n)
{
bool isPrime = false;
int totalDividends = 0;
for (int i = 1; i <= n; ++i)
{
if (n % i == 0)
totalDividends++;
}
if(totalDividends == 2)
isPrime = true;
return isPrime;
}
int nPrime(int n)
{
int result = 0;
for (int i = 0; i < n; ++i)
{
do
{
result++;
} while (!isPrime(result));
}
return result;
}
我缺少什么?
最后一个指令将数字的值设置为0
不,它没有,它永远不会走那么远。当数字等于一个时, number % nPrime(index) != 0
始终是正确的,因此内部循环永远不会退出。
您对循环的理解是完美的,这是您对自己的代码所做的错误的理解。对于这样的错误,这是正常的。
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- std::condition_variable::wait()如何评估给定的谓词
- 在没有太多条件句的情况下,我如何避免被零除
- 如何改进一堆在已知值范围内评估变量的 else-if 条件?
- 条件分支评估
- 给定使用 Bitmask 的解决方案,我无法理解代码中标记的条件评估
- 使用多个逻辑 NOT 运算符评估条件时出现混淆
- C if(false)条件评估
- 如果有条件使用String.length()的条件,为什么不一致地评估这一点
- 是否可以在编译时评估使用 std::is_same<> 的此条件?
- 未正确评估'If'条件
- 同时评估条件
- 边做边循环多条件评估C++
- 我的while循环条件没有像我预期的那样评估它们
- 评估有条件的循环表达
- C++ 在 while 语句中评估基础 if 条件
- 内部评估的布尔条件以获得循环性能
- 三元算子逻辑条件的评估.
- 评估IF条件的最有效方法是什么?
- 条件评估是否优化?这个代码坏了吗