如果我将i++,j++,N--
替换为++i,++j,--N
,该程序的输出如何不受影响?
在这两种情况下都返回N个素数?谁能告诉我为什么?
#include <iostream>
using namespace std;
int main(){
int N;
cin >> N;
for(int i=2;N>0;i++)
{
bool IsPrime=true;
for(int j=2;j<i;j++)
{
if(i % j == 0)
{
IsPrime=false;
break;
}
}
if(IsPrime)
{
N--;
cout << i << "\n";
}
}
return 0;
}
答案 0 :(得分:3)
在for
循环中,如果您使用++x
或x++
并不重要,除了++x
稍微快一点,因为它不会创建临时变量
答案 1 :(得分:2)
a++
和++a
之间的区别在于,之前是否增加,之后是增加。请考虑以下示例:
int a = 5;
cout << a++ << endl; //5
cout << a << endl; //6
a = 5;
cout << ++a << endl; //6
cout << a << endl; //6
您的循环不使用a++
的值,因此 - 在我的示例中为cout << a << endl;
,您将始终将变量增加1。
for循环的语法如下:
for(initialize;condition;step){ /*block*/}
initialize 部分在开头运行一次。对于每个循环,检查条件,然后执行步骤。它没有被评估,因此不能用条件推断。