[c] C 프로그래밍에서 대?

이 C 세 루프는 다음과 같습니다 for, while그리고 do-while. 그들 사이의 차이점은 무엇입니까?

예를 들어 거의 모든 while진술이 진술로 대체 될 수있는 것 같습니다 for. 그렇다면 어떤 이점이 while있습니까?



답변

동안 루프는 항상 먼저 조건을 평가합니다.

A는 루프 동안 / 할 항상에서 코드를 실행할 do{}첫 번째 블록을 다음 조건을 평가합니다.

루프는 당신이 카운터 변수, 체크 상태, 한 줄에 모든 카운터를 증가하는 방법을 개시 할 수 있습니다.

하루가 끝나면 모두 여전히 루프이지만 실행 방법에 대한 유연성을 제공합니다.

다음은 문제를 해결하는 데 도움이 될 수있는 서로 다른 유형의 루프를 사용 하는 이유에 대한 훌륭한 설명입니다 . 감사합니다 clyfe

사이의 주요 차이점 for의와 while의는 화용론의 문제이다 : 우리가 일반적으로 사용for 반복 알려진 수있을 때, 사용의 while구조 할 때 사전에 알려져 있지에서 반복 횟수. whiledo ... while
문제는 두 번째 시작 한 번에 명령을 실행, 어용으로도, 그리고 나중에 그냥 동안 간단한처럼 동작합니다.


For 루프는 간결하기 때문에 특히 좋습니다. 이 for 루프의 경우 :

while 루프로 작성하려면 다음을 수행해야합니다.

이 경우 따라 count++;잡아야 할 것이 더 많으며 논리에서 손실 될 수 있습니다. 이것은 위치에 따라 번거로울 수 있습니다.count 증가 와 루프의 논리 전후에 증가해야하는지 여부 있습니다. for루프를 사용하면 카운터 변수는 항상 루프의 다음 반복 전에 증가하여 코드에 일부 균일 성을 추가합니다.


완성도를 위해 이야기 break하고continue 여기에서 루프 처리를 수행 할 때 유용하게 사용되는 진술 .

break 는 현재 루프를 즉시 종료하고 더 이상 반복이 실행되지 않습니다.

continue현재 반복 을 종료 하고 다음 반복 으로 이동합니다.

for 루프에서 유의 continue평가 part3의 표현 for (part1; part2; part3); 반대로 while 루프에서는 루프 조건을 재평가하기 위해 점프합니다.


답변

속도와 성능에 대한 강한 우려가있는 경우 가장 좋은 방법은 어셈블리 수준에서 컴파일러가 생성 한 코드를 확인하는 것입니다.

예를 들어, 다음 코드는 “do-while”이 조금 더 빠르다는 것을 보여줍니다. 이것은 “jmp”명령어가 “do-while”루프에서 사용되지 않기 때문입니다.

BTW,이 특정 예에서 최악의 경우는 “for”루프에 의해 제공됩니다. :))

// “FOR”루프 :

// “WHILE”루프 :

// “DO-WHILE”루프 :


답변

가독성을 위해


답변

그것들은 모두 상호 교환 가능합니다. 당신은 하나의 유형을 선택하고 영원히 사용할 수 있지만 일반적으로 주어진 작업에 대해 하나가 더 편리합니다. “왜 스위치가 있고 if 문을 여러 개 사용할 수 있습니다”라고 말하는 것과 같습니다. 사실이지만 변수에서 값 집합을 확인하는 것이 일반적인 패턴이라면 언어 기능이 있으면 편리하고 읽기가 훨씬 쉽습니다. 하기 위해서


답변

특정 반복 횟수가 아니라 조건이 참인 동안 루프를 실행하려면 다른 사람이 이해하기가 훨씬 쉽습니다.

다음과 같은 것보다 :


답변

for루프는 본질적으로 멋진 while루프 라는 것을 기억하십시오 . 그들은 같은 것입니다.

for 루프의 장점은 실수로 무한 루프를 수행하는 것이 더 어렵다는 것입니다. 또는 일반적으로 초기 문에 루프 var를 배치하기 때문에 하나를 수행 할 때 더 분명합니다.

while당신이 표준 증분 패턴을 수행하지 않을 때 루프는 더 분명하다. 예를 들면 :


답변

필요에 가장 잘 맞는 루프를 사용해야합니다. 예를 들면 :

분명히 그러한 상황에서 “for”는 “while”보다 더 좋아 보입니다. 그리고 “do while”은 루프의 상태가 확인되기 전에 이미 일부 작업을 수행해야 할 때 사용됩니다.

내 하찮은 영어 실력에 죄송하다는 말씀을 드리고 싶습니다).