2014-07-06 2 views
-3

i ++, j ++, N - ++ i, ... 등을 대체하면이 프로그램의 출력은 어떻게 영향을받지 않습니까? 두 경우 모두 N 개의 소수를 반환합니까? 아무도 왜 내게 말할 수 있습니까? 당신이 임시 변수를 만들지 않습니다 때문에 약간 더 빠를 것이라고 ++x 제외 ++x 또는 x++를 사용하는 경우이 문제가되지 않는 for 루프에서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

나는 ++와 ++ 사이에 차이가 없습니까? – 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

.

+0

예를 들어 내가 ++를 사용할 경우 루프는 i = 2에서 시작하여 1 씩 증가하지만 ++를 사용하면 루프는 i = 3에서 시작됩니다. 맞습니까? – JoeEhab12

+0

아니요 for 루프의 경우 첫 번째 실행에 대해 i = 2에서 시작하고 나중에 i = 3, i = 4 등에서 시작합니다. 이렇게 구현됩니다. 아무리 당신이 ++ i 또는 i ++을 사용한다면 – deW1

+0

@ user3809253 나는 맞을 까? '아니오. for 루프의 세 번째 명령문은 ** 루프 본문이 실행 된 후 ** 실행됩니다. –

관련 문제