programing

"for(;;)"는 무엇을 의미합니까?

subpage 2023. 7. 8. 10:52
반응형

"for(;;)"는 무엇을 의미합니까?

C/C++에서 다음은 무엇을 의미합니까?

for(;;){
    ...
}

무한 루프입니다. 이는 다음과 같습니다.while(true)종료 조건이 제공되지 않으면 조건은 기본적으로 false로 설정됩니다(즉, 루프가 종료되지 않음).

C와 C++ (그리고 다른 많은 언어들에서도)에서,for루프에는 세 개의 섹션이 있습니다.

  • 루프가 시작되기 전에 실행되는 사전 루프 섹션.
  • 사실이지만 루프 본문을 실행하는 반복 조건 섹션.
  • 루프 본체의 각 반복 후에 실행되는 사후 처리 섹션.

예:

for (i = 1, accum = 0; i <= 10; i++)
    accum += i;

1부터 10까지의 숫자를 합산합니다.

대략 다음과 같습니다.

i = 1;
accum = 0;
while (i <= 10) {
    accum += i;
    i++;
}

단, 의 섹션이 필요한 것은 없습니다.for문에는 실제로 모든 것이 포함되어 있으며, 반복 조건이 누락된 경우 이는 사실로 간주됩니다.

그래서 그for(;;)루프는 기본적으로 다음을 의미합니다.

  • 루프 설정을 수행하지 않습니다.
  • 영원히 반복(반복, 반환 등에도 불구하고); 그리고.
  • 사후 처리를 수행하지 마십시오.

즉, 무한 루프입니다.

일부가 될 때까지 루프break,exit,throw루프 내부의 등문이 실행됩니다.기본적으로, 당신은 생각할 수 있습니다.for루프는 다음으로 구성됩니다.

for (setup; test; advance)
    ...

"테스트"가 비어 있으면 다음과 같이 간주됩니다.true루프가 계속 작동합니다.빈 "설정"과 "고급"은 아무 것도 하지 않습니다.

다음이 있을 때까지 계속되는 무한 루프break,exit또는goto진술.

대답이 두 구성이 동등하다는 것을 시사하더라도, 두 구성 사이에는 미묘한 차이가 있습니다.for(;;)그리고.while(1)(둘 다 무한 루프를 생성함) C 언어(그리고 아마도 컴파일러에 의존함).

일부 컴파일러(예: Windriver DIABData)는 사용할 때 "조건은 항상 참입니다"에 대해 불평합니다.while(1).

로 변경for(;;)를 사용하면 경고를 제거할 수 있습니다. 아마도 후자의 표현식이 의미적으로 더 강하여 의도적으로 무한 루프를 생성할 수 있고 "항상 참" 조건이 전혀 없기 때문일 것입니다(그리고 쓰기가 더 짧습니다).

반면에 C++ 언어는 Adrian이 코멘트에서 언급한 것처럼 두 구조 모두에 대해 차이를 보이지 않습니다.

C++ 표준은 누락된 조건이 암시적으로while와 동등한 조항while(true)그리고.for ( for-init-statement condition opt ; expression opt )는 진은다과같다니습음술다에 합니다.{ for-init-statement while ( condition ) { statement expression ; } }

언급URL : https://stackoverflow.com/questions/4894120/what-does-for-mean

반응형