이번 포스트는 반복문 파트중 while문에 대한 이야기를 해 보려고 한다.
1. while문의 기본 사용 방식
int main(void)
{
while(조건식)
{
// do something
}
}
while문은 for문보다 조금 더 심플한 모양으로 사용한다.
조건식의 내용만 참이라면 while문 아래에 있는 문장을 실행한다.
다만 for문과 다른 점이라면, 조건식은 생략이 불가능하다.
그 외 기본적인 사용방식에 특이사항이라...
특별한 것은 없다.
2. do-while문의 기본 사용 방식
do하면 무엇이 생각나는가?
뭔가를 하라! 라는 느낌이 강하지 않은가?
이 do-while문에서도 마찬가지로
do(실행) 먼저 진행하고, while에서 반복할지를 결정한다.
void something_function(void)
{
do
{
} while(조건식);
}
그래서 반복할지 말지를 결정하기 전에 실행을 먼저 하고자 한다면,
do-while문을 많이 사용하기도 한다.
기본적인 사용방식에 특이사항 하나가 있는데,
do-while문을 사용할 경우, while(조건식)뒤에 세미콜론(;)은 반드시 붙여야 된다.
3. while, do-while의 특이한 사용 방식
내 기준에서 처음 봤을 때, 많이 당황스럽게 했던 코드들이다.
먼저 for문을 이야기할 때도 했던 것이지만
int main(void)
{
// do something
while(1)
{
// do main loop
}
}
임베디드에선 이런 코드들이 거의 대부분이다.
이 코드 비슷한게 안보인다면 너가 모르는 어딘가에 짱박혀 있을 수도 있다.
그리고 optimization이라고 compiler에서 최적화 옵션을 주는 기능이 있는데,
이 optimization 레벨중에 사이즈의 최적화를 회피하기 위해 do-while을 삽입하기도 한다.
void do_some_function(void)
{
do
{
// do something
} while(0);
}
나도 신입 시절에 TI의 BLE를 하면서 처음 배운건데,
do 안의 코드를 optimization없이 반드시 실행시키고 싶다면 위와 같은 코드를 두어
최적화를 피했었다.
(특히나 GPIO같이 hardware를 제어하는 코드가있음에도 불구하고
실행을 전혀 안해서 꽤나 당황했는데 이걸 하드웨어 제어를 할 때마다 왜 썼는지 몸으로 배운 코드다.)
8051 MCU에서나 쓰던걸...요즘 쓰...을
아 요즘에 나도 쓰고 있지 참;
저거는 함수 내부에 일부 단락의 최적화를 피하기 위해 쓰지만,
최적화를 피하는데에 이 방법 말고도 __attribute__를 사용하기도 한다.
이건 머어어언 훗날에 이야기 하도록 하자.
(이건 컴파일러마다 다르기도 하고, 활용한다 해도 정보가 많이 없어서 피곤해지기도 한다.)
'C언어 이야기' 카테고리의 다른 글
| C언어 - 반복문, for (1) | 2025.07.16 |
|---|---|
| C언어 - 조건문(3) (2) | 2025.07.09 |
| C언어 - 조건문(2) (0) | 2025.07.02 |
| C언어 - 조건문(1) (0) | 2025.06.25 |
| C언어 - 연산자 (1) | 2025.06.18 |