본문 바로가기

IT프로그래밍

C언어 삼항 연산자 사용법, 소스코드 설명

조건문 중 삼항 연산자 조건문이 있습니다.

 

if나 switch-case문에 비해 생소하기도 하고, 실제 많이 사용되지 않습니다.

 

하지만 그렇다고 지나칠수는 없습니다.

 

다른 조건문들이 갖지 못한 삼항연산자만의 특징 또한 존재 합니다.

 

1. 삼항 연산자 문법

조건 ? 참(true)일때의 값(또는 액션) : 거짓(false)일때의 값(또는 액션);

 

?를 통해 삼항연산자임을 선언하고

:를 통해 true와 false의 분기를 나눕니다.

 

아직 이해가 되지 않으시다면 아래 예시를 봐주시기 바랍니다.

 

예시. 입력 받은 수가 홀수인지 짝수인지 출력하는 프로그램

 

소스 코드

#include <stdio.h>

int main(void)
{
	int input_number = 0;
	scanf("%d", &input_number);

	input_number%2 == 0 ? printf("짝수\n") : printf("홀수\n");
}

 

소스 설명

input_number에 사용자가 입력한 숫자를 할당하고,

삼항 연산자를 통해 해당 숫자가 홀수인지 짝수인지 출력해주는 프로그램입니다.

 

실행 결과

 

if문을 사용하지 않고 삼항 연산자를 사용하여 구현되어도 잘동작되는 것을 확인 할 수있습니다.

 

삼항 연산자를 사용하는 이유는 첫째, 소스가 간결해지는 효과가 있습니다. 만약 위의 구문을

if문으로 작성하였다면,

if(intput_number %2 == 0)

{

    printf("짝수"\n)'

}

else

{

    printf("홀수"\n)'

}

로 표현되었겠지만, 삼항연산자는 한줄로 표현할 수 있다는 특징이 있습니다.


 

하나 더 지나칠 수 없는 삼항 연산자의 특징이라면 return 뒤에 삼항연산자를 추가 시킬 수 있다는 것입니다.

예시를 하나 더 들어보겠습니다.

역시 홀, 짝을 판별하는 프로그램입니다.

 

#include <stdio.h>

char* judgeOddorEven(int a)
{
	return a%2==0? "짝수\n" : "홀수\n";
}

int main(void)
{
	int input_number = 0;
	scanf("%d", &input_number);

	printf(judgeOddorEven(input_number));
}

 

입력받은 수를 judgeOddorEven함수로 보내고 해당 함수에서 홀짝을 판별하여 문자열로 리턴하여 주는 것을 그대로 printf한 소스 입니다.

 

주목해야 하는 부분은 judgeOddorEven함수 입니다.

return 뒤에 삼항연산자가 쓰여있습니다.

 

이것은 if문이 할 수 없는 동작입니다.

return if(a%2==0)

{

}

.

.

이런식으로 정의해 나가는 순간 신택스 에러가 발생합니다.

 

물론 위에서 if문으로 판단한 후에 return을 해줘도 되지만, 삼항 연산자가 갖는 특징을 말씀드리기 위한 것임을 다시 한번 말씀드립니다.

 

실행 결과

 

 

 

봐주셔서 감사합니다.