C 언어 | 흐름 제어 | 조건 연산자


조건의 결과에 따라 판단하는 식을 선택하는 조건 연산자에 대해 설명한다. if 문에 의한 제어와 달리, 조건 연산자는 조건에 따라 어떤 식을 선택할지에 대해 판단한다.

3항 연산자

C 언어 연산자의 대부분은 하나의 피연산자를 받는 단항 연산자 또는 두 개의 피연산자를 받는 2항 연산자이며, 3개의 피연산자를 받는 3항 연산자가 존재한다. 그것은 조건 연산자 “? :“이다.

조건 연산자는 if 문과 매우 유사한 동작을 하나의 식으로 실현시킬 수 있다. 따라서 소규모 분기 처리에 적합하다. 예를 들어, 어떤 값 n이 0이 아니라면, 변수 z에 x를 대입하고, 그렇지 않으면 z에 y를 대입한다라는 식으로 분기에 적합하다. 조건 연산자는 다음과 같이 설명한다.

조건 연산자

조건식? 수식1 : 수식2

조건식에는 판단하는 식을 지정한다. 여기에서 지정한 조건식이 참이면 수식1이 선택되고, 이 연산자의 결과는 그 값이 되고, 그렇지 않으면 수식2가 선택되어 그 값이 결과로 반환된다. 변수 z에 대입하는 값을 조건에 의해 분기시키고 싶은 경우는 다음과 같이 될 것이다.

z = n ? x : y;

이 수식에서 n이 참이면 z에 x를 대입하고, 그렇지 않으면 z에 y를 대입한다는 것을 나타낸다. 이를 if 문을 사용하여 작성할 수 있지만, if-else를 이용한 경우에는 이보다 스마트하게 기술할 수 없다.

코드1

#include <stdio.h>

int main() {
  int iVariable;
  printf("Please input a number 0 or some else>");
  scanf("%d" , &iVariable);
 printf("An input value is %s.\n" , iVariable ? "True" : "False");
  return 0;
}

이 프로그램은 사용자로부터 0 또는 다른 값을 입력받아 그 값을 확인한다. 입력된 값이 참, 또는 거짓에 의해 printf() 함수가 표시하는 문자가 변화하는 프로그램이다. printf() 함수에 자세히 보도록 하자.

iVariable ? "True" : "False"라는 식은 iVariable을 확인하여 이것이 참이라면 “True"를, 그렇지 않으면 “Flase"을 돌려준다. printf() 함수의 첫번째 파라미터에는 문자열을 받을 서식 제어 문자 %s를 지정하여 이를 표시하고 있다.