2014-07-06 24 views
-3

如果用i ++,j ++,N - 替換++ i,...等,該程序的輸出如何不受影響?在這兩種情況下,它會返回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; 
} 
+2

爲什麼你認爲這會有所作爲? –

+0

i ++和++ i沒有區別嗎? – JoeEhab12

+0

你認爲區別是什麼? –

回答

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;在我的例子,你總是會得到的變數將增加一個。

的for循環的語法如下:

for(initialize;condition;step){ /*block*/}

初始化部分在開始時運行一次。對於每個循環,檢查條件,並且隨後執行步驟。它沒有被評估,因此不會與條件推斷。

3

for循環,如果你使用++xx++除了++x會稍快,因爲它不會創建一個臨時變量也沒關係。

+0

例如,如果我使用i ++,循環從i = 2開始,然後遞增1,但如果我使用++ i,循環從i = 3開始,我是對還是什麼? – JoeEhab12

+0

沒有for循環的情況下,它將從i = 2開始第一次運行,然後在i = 3,i = 4等後開始執行。無論你是否使用++ i或i ++ – deW1

+0

@ user3809253 _'am我是對還是什麼?'___在執行循環體之後,for循環中的第3條語句被執行**。 –