2014-01-10 3 views
-2

나는 종종 책에서 삼항 연산자 (? :)를 읽지 만, 나는 그것의 모범 사례를 분명히 밝히지 않았다. 장점과 단점 또는 모범 사례는 무엇입니까?삼항 연산자를 언제 어디에서 사용할 수 있습니까?

+1

'if (condition) someValue else someOtherValue'의 줄임말입니다. 그게 다야. –

+1

'if ... else ...'하는 것보다 두 값 (참값 하나는 거짓 값)을 사용할 때 사용하십시오. 그것은 더 조밀하다. 또한 일부 언어에서는 실제로 연산자이며 'if ... else ...'에 대한 진정한 속기는 아닙니다 – Justin

+0

http://programmers.stackexchange.com/questions/28314/ternary-operator-considered-harmful – sumit

답변

5

이항 연산자 ? :은 실제로 값을 반환한다는 것을 제외하면 if-then-else 구조를 나타냅니다. 그래서 대신 :

if (condition) 
    x = expression1; 
else 
    x = expression2; 

당신은 쓸 수 있습니다 :

등 C, C++, 자바,에서
x = (condition) ? (expression1) : (expression2); 

, 당신은 쓸 수 없습니다 :

x = if (condition) (expression1) else (expression2); 

일부 언어, 루비처럼 수행 그러나 Ruby의 문은 항상 값을 반환하고 블록의 값은 블록의 마지막 문이 반환 한 값이기 때문에 이와 같은 형식을 허용합니다.

+0

":?"라고 말할 때 염두에 두어야 할 상황을 제공 하시겠습니까? 'if-then-else'를 나타냅니다. (당신이 설명하기 위해 계속됩니다.) 이것은 C에서하는 것과는 다릅니다.이 구문이 C로 시작한다는 것을 알고 있습니다. –

+0

그는 실제로 그 값과는 달리 값을 반환한다고 말합니다. '만약 그 밖의 사촌. –

+0

@RobertHarvey : 이것은 잘못된 것이며 매우 잘못된 일반화입니다. 그는 "* * * in ... C ... * 실제로 * 값을 반환합니다"라고 말합니다. 네가 그걸 이해하지 못했다고 나는 믿지 않는다. –

0

귀하는 변수가 상기 비교 결과에 기초하여 할당되는 간단한 IF-다른 비교에 대한 속기

int nNum1 = 10, nNum2 = 20, nMax = (nNum1 > nNum2) ? nNum1 : nNum2 

으로 오퍼레이터를 사용할 수있다.

관련 문제