[C] GCC 확장: 엘비스 연산자

[원본 링크]

요즈음의 뭇 언어들을 보면 엘비스 연산자(?:) 라는게 있다.

A ?: B
와 같은 표현식에서 A가 null이 아니라면 A를 반환, null이라면 B를 반환하는 표현식을 구성하는 것이다.

C/C++에선 이게 표준엔 없지만, gcc와 clang 확장에선 이걸 지원한다.

다만 좀 불완전하고 쓸모도 별로 없는것같다.

C는 포인터에 대한 자동참조가 안되므로... ?:의 결과값은 주소가 되곤 할 것이다.
그래서 아래의 코드도 주소값 자체를 출력한다. image

image

가짜 null밖에 없는 c답게, 그냥 0이면 다 null로 쳐리한다. image

image

null과 별개로, 초기화하지 않은 변수를 분간하는 기능도 있다.

초기화하지 않은 변수는 null로 처리되는듯하다. image

image

근데 뭐.. 쓸모가 있나 싶다.