조건식 연산자
C가 하나의 삼항 연산자: 조건식 연산자 (? :).
구문
조건식:
논리적 OR 식논리적 OR 식 ? 식 :: 조건식
해당 논리적 OR 식 정수 계열, 부동, 또는 포인터 형식이 있어야 합니다.먼저 그 동일성을 0으로 계산 됩니다.시퀀스 위치가 오는 논리적 OR 식.피연산자의 평가 다음과 같이 진행 됩니다.
경우 논리적 OR 식 0으로 같지 않은 식 평가 됩니다.식의 계산 결과 비 단말 이름으로 지정 됩니다 식.(즉, 식 경우에 평가 됩니다 논리적 OR 식 마찬가지입니다.)
경우 논리적 OR 식 0 이면 조건식 평가 됩니다.값은 식의 결과 조건식.(즉, 조건식 경우에 평가 됩니다 논리적 OR 식 은 false입니다.)
이때 중 하나 식 또는 조건식 계산, 있지만 않는 두입니다.
조건부 연산의 결과 유형을 형식에 따라 달라 집니다를 식 또는 조건식 같이 피연산자:
경우 식 또는 조건식 계열 또는 부동 형식 (해당 형식이 될 수 있습니다 다른), 연산자는 일반적인 산술 변환이 수행 됩니다.결과 형식은 형식 피연산자의 변환 후입니다.
두 경우 식 및 조건식 같은 구조체, 공용 구조체 또는 포인터 형식, 구조체, 공용 구조체 또는 포인터 형식이 같은 결과의 형식입니다.
형식 피연산자가 모두 있는 경우 void를 입력 하 게 됩니다 void.
피연산자 중 하나가 모든 종류의 개체에 대 한 포인터가 고 다른 피연산자에 대 한 포인터입니다 경우 void, 포인터를 개체 포인터 변환 됩니다 void 및 결과에 대 한 포인터입니다 void.
두 경우 식 또는 조건식 에 대 한 포인터가 고 다른 피연산자 상수 식 값이 0, 결과의 형식은 포인터 형식입니다.
한정자가 입력에 대 한 포인터 형식 비교에 (const 또는 volatile) 형식의 포인터 사항은 중요 하지만 결과 형식 한정자 조건부의 두 구성 요소에서 상속 합니다.
예제
다음 예제에서는 조건부 연산자의 사용을 보여줍니다.
j = ( i < 0 ) ? ( -i ) : ( i );
절대 값을 지정 하는이 예제 i 에 j.경우 i 0 보다 작은 -i 할당 된 j.경우 i 는 0 보다 크거나 i 할당 된 j.
void f1( void );
void f2( void );
int x;
int y;
.
.
.
( x == y ) ? ( f1() ) : ( f2() );
이 예제에서는 두 개의 함수 f1 및 f2, 및 두 변수 x 및 y, 선언 됩니다.두 변수는 함수 값,이 경우 프로그램에서 나중에 f1 라고 합니다.그렇지 않으면 f2 라고 합니다.