posted by 구로보루 2017. 7. 20. 12:17

for 반복문

 for문은 for(초기식 ; 조건식 ; 증감식)으로 구성되어 초기식에 값으로 시작하여 조건이 거짓이 될 때까지 증감식만큼 값을 변형시키면서 반복한다

for(int i=0; i<10; ++i)

 이면 i=0 부터 시작해서 한번 반복할 때마다 1씩 증가시켜 10 미만일 경우까지 반복한다. 그래서 0, 1, 2, 3, 4, 5, 6, 7, 8, 910번 반복하게 된다.

 

while 반복문

 while문은 while(조건식)을 통해 조건식이 참일겨우에 계속 반복한다.

while(i<10) ++i;

 이면 while문 외부에서 초기값이 저장된 i값부터 시작해서 10보다 작다는 조건이 참이면 반복하고 반복문 안에서 증가시킨다.

 


 

 두가지 반복문은 서로 사용하는 방법이 다르지만 결과는 똑같이 나온다. 두가지에 차이점을 찾아봐도 사용법만 다를 뿐 결과는 똑같고 속도차이는 for문이 더 빠르다는 경우가 많더라. 이번에 C언어를 배우면서 이 두가지에 결정적인 차이점에 대해서 들었다. for문의 조건에 사용할 변수를 생성하는 초기식에서 int i = 0으로 for문에서만 사용할 변수를 생성할 경우 CPU의 캐시메모리에 그 값을 저장하는데 while문의 경우는 함수내의 지역변수를 사용하여 조건식을 생성하는 경우가 많기 때문에 이는 메모리에 저장된다.

 

 

 이 구조에서 for문은 CPU에 있는 캐시메모리를 while문의 경우는 그냥 메모리에서 사용하므로 for문의 수행속도가 더 빠르다.(여기저기 검색해보면 반복의 횟수가 적을경우는 while문이 더 빠르다는 말도 있다.)

 

 만약 for문의 조건변수가 캐시에 들어가는 최적화가 싫다면

for(volatile int i =0 ; i < 10; ++i)

 이런식으로 정의하여 막을 수 있다. (임베디드에서 주로 쓴다고 함)

'공부 > C' 카테고리의 다른 글

글자색 설정하기  (1) 2017.08.27
for문 증감문에 전위연산자와 후위연산자의 차이  (0) 2017.07.27
선행처리기  (0) 2017.07.19
#define / const  (0) 2017.07.19
자료형, 서식문자  (0) 2017.07.18