programing

C와 C++에서 "비어있는 루프"라는 용어는 정확히 무엇을 가리킵니다.

oldcodes 2023. 10. 6. 21:58
반응형

C와 C++에서 "비어있는 루프"라는 용어는 정확히 무엇을 가리킵니다.

이런 일입니까?

for(;;)
 {
   statements;
 }

아니면 이것입니까?

for(initialisation;condition;updation)
{
}

저는 다양한 자료를 참고하여 답을 찾고 있습니다.

첫 번째 경우(빈 식의 경우)는 무한 루프이고 두 번째 경우( 식의 본문의 경우)는 빈 루프입니다.

제 환경에서는 다음과 같습니다.

for(;;) { statements; }

끝없는 고리

for(initialisation;condition;updation) { } 

빈 고리

답변은 상황에 따라 달라집니다.

루프를 위한 빈 공간을 의미한다면,

 for(;;)
 {
     statements;
 }

그런 것입니다.

비록 잠시 동안의 루프를 통해서도 동일한 것을 달성할 수 있습니다.

while(true)
{
    statements;
}

그리고 이건 빈 고리가 아닙니다이 두 가지 모두 사용에서 벗어나야 하는 무한 루프입니다.break네 고리 안에.

반면에.

for(initialisation;condition;updation)
{
}

이는 기본적으로 루프 자체 이전에 정의될 수 있는 일부 변수를 업데이트하는 것을 제외하고는 아무것도 하지 않는 "빈" 루프입니다.

빈 루프(empty loop)는 빈 몸체를 갖는 루프입니다.

for(int i = 0; i < 10; ++i) {}
while(cin) {}

(여기 있는 두 번째 예도 마찬가지로 끝이 없습니다.)

함수가 원하는 부작용을 일으켜 성공을 반환하는 경우, 실패할 때까지 반복해야 하는 경우, 예를 들어 파일의 마지막 줄을 읽는 경우 등 유용합니다.

std::string getLastLine(std::string filename)
{
  std::ifstream in(filename.c_str());
  if(!in)
    return "";

  std::string line;
  while(std::getline(in, line)); // empty loop, the operation returns the condition
  return line;
}

다음과 같습니다.

while (true) {
  statements;
}

루프에 대한 무한은 다른 것이 멈출 때까지 작동하는 루프입니다.

for(;;)
 {
   statements;
 }

루프를 참으로 만드는 중복 값/Grabage 값이 있기 때문에 무한 루프입니다.

for(initialisation;condition;updation)
 {
   body;
 }

는 단지 루프를 위한 구문일 뿐입니다(교육적 목적의 사용).

언급URL : https://stackoverflow.com/questions/4592166/what-does-the-term-empty-loop-refer-to-exactly-in-c-and-c

반응형