다른 연산자들과 다르게 피연산자가 3개이다.
삼항 연산자의 원형: 조건식 ? 참일 때의 반환 값 : 거짓일 때의 반환 값
printf("연산 결과: %d\n", 1 == 5 ? 1 : 0); // 0
결과가 참이라면 1을, 거짓이라면 0을 반환한다.
조건식을 비교하고 해당 조건식이 참이면 종속 문장을 실행, 거짓이면 탈출!
if ~ else, switch ~ case 두 개가 존재한다.
if ~ else의 원형:
if (조건식) // 조건문의 시작
{
종속 문장;
}
else if (조건식) // 조건문을 추가
{
종속 문장;
}
else (조건식) // 나머지
{
종속 문장;
}
주의할 점: if ~ else 문에서 조건식 뒤에 ;(세미콜론)을 작성하게 되면 종속 문장이 사라지게 된다.
if ~ else 문에서 종속 문장이 한 줄일 때는 {}(중괄호)를 생략할 수 있다.
국어, 수학, 영어 점수를 받아 평균점수로 등급을 출력하기
int kor, mat, eng;
double avg = (kor + mat + eng) / 3;
printf("국어: ");
scanf("%d", &kor);
printf("수학: ");
scanf("%d", &mat);
printf("영어: ");
scanf("%d", &eng);
printf("평균: %.2f\n", avg);
if (avg >= 90)
printf("등급: A");
else if (avg >= 80)
printf("등급: B");
else if (avg >= 70)
printf("등급: C");
else if (avg >= 60)
printf("등급: D");
else
printf("등급: F");
switch ~ case 문에서 break
키워드는 해당 문법을 탈출하는 용도로 사용된다.
하지만 프로그래머가 의도적으로 break를 작성하지 않는 경우도 있다.
switch ~ case 문에서는 비교할 값 공간에는 정수, 정수로 변환할 수 있는 값, 정수가 저장된 변수만 작성할 수 있다. 각 case에 작성되는 값은 반드시 상수로 작성
해줘야 한다.
switch ~ case의 원형:
switch (비교할 값)
{
case 해당 값: // 각 조건
종속 문장;
break;
default: // 나머지
종속 문장;
break;
}
int kor, mat, eng;
double avg;
printf("국어: ");
scanf("%d", &kor);
printf("수학: ");
scanf("%d", &mat);
printf("영어: ");
scanf("%d", &eng);
avg = (kor + mat + eng) / 3.0;
printf("\n평균: %.2f\n", avg);
switch ((int)avg/10) // double을 int로 강제 형변환
{
case 9:
printf("등급: A");
break;
case 8:
printf("등급: B");
break;
case 7:
printf("등급: C");
break;
case 6:
printf("등급: D");
break;
default:
printf("등급: F");
break;
}