C프로그래밍 5장

이은주·2022년 9월 19일

C프로그래밍

목록 보기
5/6

1. 조건문 개요

1-1. 제어문

  • C 언어는 순차처리언어로, 특별한 지정이 없으면, 소스 코드 첫 줄부터 차례대로 처리
  • 그러나 문제 해결 위해 처리 흐름 제어 필요 → 제어문
분류종류
조건문if 문, if-else 문, switch 문
반복문for 문, while 문, do-while 문
기타break 문, continue 문, goto 문, return 문

2. if 문

2-1. if 문

  • 조건식이 참이면 중괄호로 둘러 쌓인 블록 안의 문장들이 실행된다.
  • 구문
if( 조건식 )
{
	문장; 	// 조건식이 참일 때만 실행
} 	// 블록 안의 문장이 하나인 경우 중괄호 생략 가능

2-2. if 문 사용 시 주의 사항

  • if의 조건식 뒤에 바로 세미콜론 ; 은 쓰지 않는다.
  • 조건식에서 비교 연산자 == 가 아닌 대입 연산자 = 를 쓰는 경우
int x = -2;
if( x = 9 ) // 대입 연산: 참
	printf("x는 %d\n",x);

→ 위 코드는 컴파일 오류가 발생하지 않음 (즉, 문법적 오류 없음)
→ 위 코드의 의미: x에 9를 대입하고, x의 값을 조건식으로 사용 (C 언어에서 0이 아니면 모두 참)

3. if-else 문

3-1. if-else 문

  • if의 조건식이 참이면 조건식 바로 다음의 블록이 실행되고,
  • 조건식이 거짓이면 else 문 다음의 블록이 실행된다.
  • 구문
if( 조건식 ) {
	문장1; // 조건식이 참일 때 실행
}
else {
	문장2; // 조건식이 거짓일 때 실행
}	// 각 블록 안의 문장이 하나인 경우, 해당 블록의 중괄호 생략 가능

4. 다중 if 문

4-1. 다중 if 문 or 중첩 if 문

  • if 문 안의 문장이 또 다른 if 문인 경우 (if-else 문 포함)

4-2. else는 위쪽에서 짝이 없는 가장 가까운 if와 짝이 된다.

if( x >= 0 )
	if( x%2 == 0)
		printf("양의 짝수 또는 0\n");
	else
		printf("양의 홀수\n");

4-3. else를 멀리 있는 if와 짝을 지으려면?

  • 중괄호 {}를 사용하여 if 문의 적용 범위를 강제로 바꿔주면 됨
if(x >= 0) {
	if(x%2 == 0)
		printf("양의 짝수 또는 0\n");
}
else printf("음수\n");

4-4. 다중 선택을 위한 다중 if 문의 일반적인 구문

if( 조건식 A ) {
	문장1; // 조건식 A가 참일 때 실행
}
else if( 조건식 B ) {
	문장2; // 조건식 A는 거짓이고, 조건식 B는 참일 때 실행
}
else if( 조건식 C ) {
	문장3; // 조건식 A, B는 모두 거짓이고, 조건식 C는 참일 때 실행
}else {
	문장; ⇨ 조건식 A, B, C, … 모두 거짓일 때 실행
} // 각 블록 안의 문장이 하나인 경우, 해당 블록의 중괄호 생략 가능

5. switch 문

5-1. switch 문

  • 주로 다중 선택에 사용하는데, 다중 if문보다 간결
  • 대신, 사용 영역이 if-else에 비해 제한적

5-2. switch 문 동작 방식

  • switch 문 수식의 결과 값과 case의 상수 값을 차례로 비교하여 일치하는 case의 문장들부터 차례로 수행
  • case 비교 시 default: 의 의미 : 그 외의 경우
  • 해당 case도 없고, default: 도 없으면? : 아무 문장도 실행하지 않고, switch 문 끝으로 이동

5-3. break 문

  • switch 문을 중간에 벗어나는 역할
  • switch 문 수행도중 break 문을 만나면 switch 문 끝으로 이동

5-4. case 에 정수1, 2, 3이순서대로나와야하나? NO!!

  • 순서 상관없다 (하지만, 굳이..)
  • 문자도 가능

5-5. switch 문 사용시 주의점

  • case 에는 정수형 상수(문자 포함)만 가능
    • case 1 : ⇨ (O) 정수형 상수
    • case 'a' : ⇨ (O) 문자형 상수 (C 언어에서 문자도 정수이다.)

0개의 댓글