조건 연산자
Conditional operator| 무료 사전인 Wiktionary에서 조건부 연산자를 찾아 보십시오. |
조건 연산자는 많은 프로그래밍 언어로 지원된다.이 용어는 보통 다음을 가리킨다.?:C, C++, C# 및 JavaScript와 같이.그러나 자바에서 이 용어는 또한 언급할 수 있다.&&그리고 .
&&앤앤앤
Java와 같은 일부 프로그래밍 언어에서 조건부 연산자는 단락 부울 연산자를 가리킨다. &&그리고 . 두 번째 식은 첫 번째 식이 전체 식의 값을 결정하기에 충분하지 않을 때만 평가된다.[1]
비트 측정 시스템과의 차이
&그리고 많은 프로그래밍 언어로 발생하는 비트 연산자.주요 차이점은 비트 연산자는 이진수의 개별 비트에서 작동하는 반면 조건 연산자는 논리 연산에서 작동한다는 것이다.또한 비트 연산자 전후의 식은 항상 평가된다.
만일 (표현1 표현2 표현3) 표현식 1이 참일 경우 표현식 2와 3은 확인하지 않는다.
만일 (표현1 표현2 표현3) 이것은 표현 1이 사실일지라도 표현 2와 3을 체크한다.
누전 운전자는 불필요한 계산을 피함으로써 가동 시간을 줄일 수 있다.또한 표현식 1이 개체의 유효 여부를 확인할 때 Null 예외를 피할 수 있다.
자바에서의 사용법
계급 ConditionalDemo { 공중의 정태의 공허하게 하다 본래의(끈[] 아그) { 인트로 값1 = 1; 인트로 값2 = 2; 만일 ((값1 == 1) && (값2 == 2)) 시스템.밖으로.인쇄하다("value1은 1이고 AND value2는 2"); 만일 ((값1 == 1) (값2 == 1)) 시스템.밖으로.인쇄하다("value1은 1 OR 값2는 1"); } } "?:"
대부분의 프로그래밍 언어에서 ?:는 조건 연산자라고 불린다.3차 연산자의 일종이다.그러나 대부분의 상황에서 3차 연산자는 세 개의 연산자를 사용하는 유일한 연산자이기 때문에 ?를 구체적으로 언급한다.[2]
"의 정기적인 사용?:"
?:조건부 표현식에 사용된다.프로그래머는 조건부 연산자를 사용하여 if-ten-else 표현을 보다 간결한 방법으로 다시 쓸 수 있다.[3]
구문
조건 ? 표현 1 : 표현 2 조건:부울 값으로 평가되는 식입니다.
식 1, 식 2: 모든 유형의 값을 포함하는 식입니다.
조건을 참으로 평가하면 표현 1이 평가된다.조건을 false로 평가하면 표현 2가 평가된다.
"조건이 참일 경우 표현 1의 값을 결과에 할당하십시오.그렇지 않으면 결과에 표현 2의 값을 할당하십시오."
연결 속성
조건부 운영자는 오른쪽 연관성이 있으며, 이는 운영이 오른쪽에서 왼쪽으로 그룹화됨을 의미한다.예를 들어, a ? b : c ? d : e 형식의 표현은 ? b : (c ? d : e)로 평가된다.[2]
언어별 예
자바
계급 ConditionalDemo { 공중의 정태의 공허하게 하다 본래의(끈[] 아그) { 인트로 값1 = 1; 인트로 값2 = 2; 인트로 결과; 부울 어떤 조건 = 진실의; 결과 = 어떤 조건 ? 값1 : 값2; 시스템.밖으로.인쇄하다(결과); } } 이 예에서는 일부 조건이 참이기 때문에 이 프로그램은 화면에 "1"을 인쇄한다.예를 들어 식이 압축되어 부작용(할당 등)이 없는 경우 코드를 더 쉽게 읽을 수 있는 경우 if-ten-else 문 대신 ? 연산자를 사용하십시오.
C++
#include <아이오스트림> 인트로 본래의() { 인트로 x = 1; 인트로 y = 2; 찌꺼기::뻐드렁니가 나다 << ( x > y ? x : y ) << "는 둘 중 더 큰 것이다." << 찌꺼기::끝을 맺다; } C++의 두 번째 및 세 번째 피연산자에 적용되는 몇 가지 규칙이 있다.
- 두 피연산자가 동일한 유형인 경우 결과는 같은 유형이다.
- 두 피연산자가 모두 산술 또는 열거형인 경우, 일반적인 산술 변환(표준 변환에서 다룬)을 수행하여 공통 유형으로 변환한다.
- 두 피연산자가 모두 포인터 유형이거나 한 피연산자가 포인터 유형이고 다른 피연산자가 0으로 평가되는 상수 식인 경우 포인터 변환을 수행하여 공통 유형으로 변환한다.
- 두 피연산자가 모두 참조 유형인 경우, 참조 변환을 수행하여 공통 유형으로 변환한다.
- 두 피연산자가 모두 보이드 유형인 경우 공통 유형은 보이드 유형이다.
- 두 피연산자가 동일한 사용자 정의 유형인 경우 공통 유형은 해당 유형이다.[4]
C#
// 조건 ? first_message : second_message; 정태의 곱절로 하다 사악하게 하다(곱절로 하다 x) { 돌아오다 x != 0.0 ? 수학.죄(x)/x : 1.0; } C#의 두 번째와 세 번째 피연산자 x와 y에 적용되는 몇 가지 규칙이 있다.
- x가 X 유형이고 y가 Y 유형인 경우:
- X에서 Y로 암묵적 변환이 존재하지만 Y에서 X로 변환하지 않는 경우 Y는 조건식의 유형이다.
- Y에서 X로 암묵적 변환이 존재하지만 X에서 Y로 변환하지 않는 경우 X는 조건식의 유형이다.
- 그렇지 않으면 표현식 유형을 결정할 수 없으며, 컴파일 시간 오류가 발생한다.
- x와 y 중 하나만 유형이 있고 x와 y가 모두 해당 유형으로 암시적으로 변환 가능한 경우, 그 유형은 조건식의 유형이다.
- 그렇지 않으면 표현식 유형을 결정할 수 없으며, 컴파일 시간 오류가 발생한다.[2]
자바스크립트
시합을 하다 나이를 먹다 = 26; 시합을 하다 음료수 = (나이를 먹다 >= 21) ? "비어" : "쥬이스"; 위로하다.통나무를 하다(음료수); // "비어" 자바스크립트의 조건부 운영자는 다음 브라우저와 호환된다.
Chrome, Edge, Firefox(1) Internet Explorer, Opera, Safari, Android 웹 뷰, Android용 Chrome, Edge Mobile, Firefox for Android(4), Android용 Opera, IOS용 Safari, Samsung Internet, Node.js.[5]
조건부 체인의 특별 사용
이 3차 연산자는 우측 연관성이 있으며, 이는 if ...와 유사하게 다음과 같은 방법으로 "체인"될 수 있다는 것을 의미한다.그렇지 않으면...그렇지 않으면...다른 [4]쇠사슬
언어별 예
자바스크립트
기능을 하다 예시(…) { 돌아오다 조건1 ? 값1 : 조건2 ? 값2 : 조건3 ? 가치3 : 가치4; } // 다음과 같다: 기능을 하다 예시(…) { 만일 (조건1) { 돌아오다 값1; } 다른 만일 (조건2) { 돌아오다 값2; } 다른 만일 (조건3) { 돌아오다 가치3; } 다른 { 돌아오다 가치4; } } C/C++
경시하다 곱절로 하다 a = 표현1 ? a1 : 표현2 ? a2 : 표현3 ? a3 : /*message*/ a4; // 다음과 같다: 곱절로 하다 a; 만일 (표현1) a = a1; 다른 만일 (표현2) a = a2; 다른 만일 (표현3) a = a3; 다른 /*message*/ a = a4; 할당 식에서 특수 사용
조건부 운영자는 다른 값을 할당할 수 있는 C/C++의 L-값을 산출할 수 있지만, 대다수의 프로그래머들은 기법의 무명성 때문에만 이런 스타일을 극히 형편없다고 여긴다.[6]
C/C++
((foo) ? 술집을 내다 : 야유하다) = 뒤틀리다; //대상: 만일 (foo) 술집을 내다 = 뒤틀리다; 다른 야유하다 = 뒤틀리다; 참고 항목
- ?: 컴퓨터 프로그래밍의 조건부 연산자
- 3차 연산
- 비트 연산자
- 단락 부울 연산자
- 연산자(프로그래밍)
참조
- ^ "Equality, Relational, and Conditional Operators (The Java™ Tutorials > Learning the Java Language > Language Basics)". docs.oracle.com. Retrieved 2019-04-29.
- ^ a b c BillWagner. "?: Operator - C# Reference". docs.microsoft.com. Retrieved 2019-04-29.
- ^ "The ? : operator in Java". www.cafeaulait.org. Retrieved 2019-04-29.
- ^ a b mikeblome. "Conditional Operator: ? :". docs.microsoft.com. Retrieved 2019-04-29.
- ^ "DevDocs". devdocs.io. Retrieved 2019-04-29.
- ^ "Conditional Operator". wiki.c2.com. Retrieved 2019-04-29.