- 重文演算子
- 式の演算子
- Return 演算子
- if-else 条件演算子
- 三項演算子 ?:
- Switch 演算子
- while 反復演算子
- for 反復演算子
- do while 反復演算子
- Break 演算子
- Continue 演算子
- new オブジェクト作成演算子
- delete オブジェクト解除演算子
3진 연산자 ?:
3차 연산자의 일반적인 형태는 다음과 같습니다:
표현식1 ? 표현식2 : 표현식3 |
첫 번째 피연산자 - "표현식1" - bool 유형 값이 되는 표현식을 사용할 수 있습니다. 결과가 true이면, 두 번째 피연산자에 의해 설정된 연산자, 즉 "표현식2"가 실행됩니다.
첫 번째 피연산자가 false이면, 세 번째 피연산자 - "표현식3"가 수행됩니다. 두 번째와 세 번째 피연산자, 즉 "식2"와 "식3"는 한 유형의 값을 반환해야 하며 void 유형이어서는 안됩니다. 조건부 연산자 실행의 결과는 표현식1의 결과에 따라 표현식2의 결과 또는 표현식3의 결과입니다.
//--- 일일 시가와 종가의 차이를 정상화
|
이 항목은 다음과 같습니다:
double true_range;
|
연산자 사용 제한 #
연산자는 "표현식1" 값을 기반으로 "표현식2" 또는 "표현식3" 중 하나를 반환해야 합니다. 이러한 표현식에는 몇 가지 제한이 있습니다:
- 사용자 정의 유형과 단순 유형 또는 열거형을 함께 사용하지 마십시오. NULL을 pointer에 사용할 수 있습니다.
- 값 유형이 단순할 경우 연산자는 최대 유형이 됩니다(Type casting 참조).
- 값 중 하나가 열거형이고 두 번째 값이 숫자형이면 열거형이 int로 대체되고 두 번째 규칙이 적용됩니다.
- 두 값이 모두 열거형이면 유형이 동일해야 하며 연산자는 열거형입니다.
사용자 정의 유형 제한(클래스 또는 구조):
- 유형은 동일해야 하며 그렇지 않으면 다른 유형에서 파생되어야 합니다.
- 유형이 동일하지 않으면(상속) 자식 항목이 부모 유형으로 암시적으로 캐스팅됩니다. 즉, 연산자가 부모 유형이 됩니다.
- 개체와 포인터를 혼합하지 마십시오. 두 식 모두 개체 또는 포인터여야 합니다. NULL은 포인터용으로 쓰일 수 있습니다.
참고
조건부 연산자를 오버로드된 함수의 인수로 사용할 때는 프로그램 컴파일 시 조건부 연산자의 결과 유형이 정의되므로 주의하십시오. 그리고 이 유형은 "표현식2"와 "표현식3" 중 큰 유형으로 결정됩니다.
예제:
void func(double d) { Print("double argument: ",d); }
|
더 보기