프로그래밍/cpp

3항연산자

콘파냐 2013. 6. 17. 16:24
반응형

 

A?B:C;

위 식은 3항연산자의 기본형태다.

A가 참이면 B 거짓이면 C로 가라는 의미다.

특징을 좀더 살펴보면 ? 뒤의 문장과 :뒤의 문장은 if esle 문과 비슷하다.

else문이 스위치형식으로 거짓인경우 실행되고 참인경우 실행안되는 것 처럼 말이다.

그럼아래식을 보고 이야기하자.

A?B,B':C:C';

여기서 B'와 C'는 조건에 대한 결과와는 상관없다.

여기서 if else문과 좀 다른 특징이 눈에 뛰는데

A가 참인경우 B와 B'가 실행된다. 그리고 C'가 실행된다.

하지만 A가 거짓인경우? B' 가 실행되는가?

그렇지않다 이경우 C와 C'가 실행된다.

이는 if else문의 성격을 띠지만 ,연산자가 쓰이게되면 goto문의 특징을 갖게된다는것이다.

결국 A가 참인경우 C는 실행이 안되므로 결론적으로 if문과 goto두가지 특징을 갖게된다.

이를 토대로 3항연산자의 결과에 다시 3항연산자를 중첩할 수가있다.

A?B?C:D,E:F,G; 이런식이 가능하고 또한 계속 중첩해도되지만 이는 가독성면에서 좋지않다.

나의생각은 3항연산자는 단순한형태가 아닌이상 사용하지 않는것이 좋다는 생각이다.

다른소스를 분석할경우 이런 기본사항은 알아놓는것이 좋다.

반응형