2015. 11. 27. 01:49ㆍ프로그래밍/C/C++
정말 오랜만에 삼항 연산자에 대해 적어본다.
사실 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
하지만 뭐.. 사실 이런 예제도 있고.. 이런건 삼항 연산자가 괜찮은 방법이라고 생각한다.
자주 사용하지 않아서 가독성이 떨어진다고 생각하고 있을 수도 있다.
조금 익숙해져서 상황 봐서 써봐야지!
'프로그래밍 > 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 |