C 언어에서 조건문을 쓰면 더욱 깔끔한 형태로 사용될 수 있습니다.
if, while, for 등의 형태로 말이죠.
두 표현은 기능적으로 완전히 같지만 1 == x처럼 상수를 앞에 쓰는 방식은 실수 방지를 위해 권장됩니다. 예를 들어, if (x = 1)처럼 잘못해서 대입 연산자를 쓰는 실수를 방지할 수 있기 때문입니다.
if(x=0)은 x에 무슨 값이 있던 늘 0이 나옴=>즉 거짓.
x==0을 사용해야함
아니면 0==x를 사용 (0=x는 오류가 뜨기 때문)
위 아래 같은 기능을 한다.
- 조건 연산자 ? :는 간단한 if-else를 한 줄로 축약할 수 있음
- if-else는 블록 안에 여러 줄 코드 작성 가능, 반면 ? :는 단일 표현식만 가능
- 코드 가독성 측면에서는, 조건이 단순할 때만 ? : 사용 추천
Switch문
- break; 없으면 다음 case까지 줄줄이 실행됨 (fall-through 현상)
- 의도적으로 쓰는 경우도 있지만, 대부분은 실수!
- 각 case 블록 끝에는 반드시 break
+자주하는 실수 - if (조건);처럼 세미콜론 찍으면 조건문 무시됨!
- else if, else 뒤에는 절대 세미콜론❌
- else는 조건식 사용하지 않음 → (n >= 200)은 쓰면 안 됨
do-while문은
while과 매우 비슷
#include<stdio.h>
int main(void)
{
int a = -1;
while(0 < a)
{
printf("#%d",a);
a++;
}
return 0;
}
#include<stdio.h>
int main(void)
{
int a = -1;
do
{
printf("#%d",a);
a++;
}while(0 < a);
return 0;
}
위가 while
아래 do-while
while문은 반복을 시작하기 전에 먼저 조건을 검사합니다.
{ } 를 빠져나오지 않고,
조건식을 한번 더 확인합니다.
만일 조건식이 또 참이라면
{ } 를 한번 더 실행합니다.
반면 do-while문은 조건을 나중에 확인합니다. 일단 {} 안의 코드를 한 번 실행한 다음에 조건을 검사하고, 조건이 참이면 반복을 이어갑니다. 이 구조 덕분에 do-while문은 어떤 조건이 오더라도 최소 한 번은 반드시 실행되는 것입니다
while문은 "조건을 먼저 확인하고 나서 실행"
do-while문은
"일단 실행하고 나서 조건을 확인"
4. break, continue
break부터 알아봅시다.
#include<stdio.h>
int main(void)
{
int i;
for(i=0;i<10;i++)
{
if(5<i)
{
break;
}
printf("#%d\n",i);
}
return 0;
}
break는 의미 그대로 반복문 내부에서
반복문의 조건식과 관계없이
break가 실행되면 무조건 반복을 중단시킵니다.
break는 반드시 조건문과 함께 작성합니다
조건문과 함께 작성하지 않았다고 해서 문법적인 오류는 없지만
조건문이 없다면 break가 실행되자마자 반복문이 종료되는 것이기 때문에
사실상 반복문이 없는 것이나 마찬가지이기 때문입니다.
#include<stdio.h>
int main(void)
{
int i;
for(i=0;i<10;i++)
{
if(i%2 == 0)
{
continue;
}
printf("#%d\n",i);
}
return 0;
}
continue와 break의 차이는 반복 중단 여부에 있습니다.
break는 반복문을 중단하는 역할을 수행했지만
continue는 완전히 중단하지 않고 아래 코드를 생략하는 역할을 수행합니다.
continue를 만나면 continue를 기준으로 아래의 코드를 실행하지 않고,
생략한 뒤 다음 사이클로 넘어가게 됩니다.
위 코드에서 continue는
i가 2로 나누어 나머지가 0일 때,
즉, 짝수일 때 실행하기로 하였습니다.
따라서 i가 0, 2, 4, 6, 8인 경우
i를 출력하는 부분을 생략하고 다음 사이클로 넘어가게 됩니다.
continue 역시
break와 마찬가지의 이유로
조건문과 함께 작성해야 됩니다.