for 반복문
for문은 for(초기식 ; 조건식 ; 증감식)으로 구성되어 초기식에 값으로 시작하여 조건이 거짓이 될 때까지 증감식만큼 값을 변형시키면서 반복한다
for(int i=0; i<10; ++i)
이면 i=0 부터 시작해서 한번 반복할 때마다 1씩 증가시켜 10 미만일 경우까지 반복한다. 그래서 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 총 10번 반복하게 된다.
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 |
