[C/C++] 삼항 연산자

2015. 11. 27. 01:49프로그래밍/C/C++

728x90
728x90

정말 오랜만에 삼항 연산자에 대해 적어본다.

사실 if ~ else를 선호하는 나에게 삼항 연산자는 뭔가 goto처럼 아예 안 쓰던 녀석이었는데

실제로는 코드 뭐 꽤 사용하기도 한다고... 여튼 오랜만에 리마인드를 해보자.


삼항 연산자


영어로는 a ternary operator라고 표기한다고 한다.


(condition) ? (true value) : (false value)

로 사용되며 condition에 따라 연산의 값이 나오게 되는 것이다.

간단하긴 하지만 가끔 떠올리려면 항상 기억이 안나서...........


https://github.com/ElementalKiss/Cpp/blob/master/Example/TernaryOperator.cpp


써야하나?


삼항 연산자는 일단 코드를 간결하게 만들 수 있다.

코드는 한 줄이 되지만 사실 ? : 는 결국 if - else로 동작하기 때문에..

성능적 이슈는 별로 없다고 생각한다.

결국 생각 했을 때 세로로 문장이 늘어나느냐 가로로 늘어나느냐 밖에 차이가 없다고 생각한다.


장점 - 코드를 간결하게 하여 라인을 줄일 수 있다. 함수에서 인자 등에 넣어서 사용할 수 있다.

단점 - 결국 옆으로 커진다. 가독성은?


함수의 경우에도 인자로 넣어서 사용할 수 있지만..

로직이 복잡해지면 복잡해질수록 과연 이게 가독성이 좋을까에 대한 고민에 빠진다.


변수 선언 없이 삼항연산자를 쓴 코드가 훨씬 간결할 수 있지만

나의 개인적인 관점에선 변수 하나를 선언하고 중간 결과값을 얻음으로써

어떤 값인지 아는 것이 더 중요하다고 생각한다.


ex) num > 0 ? 1 : 0


하지만 뭐.. 사실 이런 예제도 있고.. 이런건 삼항 연산자가 괜찮은 방법이라고 생각한다.


자주 사용하지 않아서 가독성이 떨어진다고 생각하고 있을 수도 있다.

조금 익숙해져서 상황 봐서 써봐야지!

728x90
반응형

'프로그래밍 > C/C++' 카테고리의 다른 글

[Boost] 설치  (0) 2016.03.19
[C++] for each 써보기  (2) 2016.01.19
[C++, Json] jsoncpp 사용하기  (5) 2016.01.06
[C++11] 주요 기능들  (0) 2015.09.07
[C++/STL] STL 벡터와 배열 차이  (1) 2015.08.19
[C++] 스마트포인터(Smart Pointer)  (0) 2015.07.14
[STL] vector의 at()과 []의 차이  (1) 2015.07.11