기타 연산자
삼항 연산자(ternary operator)
삼항 연산자는 다른 언어에는 존재하지 않는 C언어만의 독특한 연산자입니다.
이 연산자는 C언어에서도 유일하게 피연산자를 세 개나 가지는 조건 연산자입니다.
삼항 연산자의 문법은 다음과 같습니다.
문법
조건식 ? 반환값1 : 반환값2
물음표(?) 앞의 조건식에 따라 결괏값이 참(true)이면 반환값1을 반환하고, 결괏값이 거짓(false)이면 반환값2를 반환합니다.
이때 반환값에는 값뿐만 아니라 수식, 함수 호출 등 여러 가지 형태의 명령문이 올 수 있습니다.
예제
int num01 = 15;
int num02 = 8;
int result;
result = (num01 > num02) ? num01 : num02;
printf("둘 중에 더 큰수는 %d입니다.\n", result);
실행 결과
둘 중에 더 큰수는 15입니다.
삼항 연산자는 짧은 if / else 문 대신에 사용할 수 있으며, 코드를 간결하게 작성할 수 있도록 도와줍니다.
if / else 문에 대한 더 자세한 사항은 C언어 조건문 수업에서 확인할 수 있습니다.
쉼표 연산자
쉼표(,) 연산자는 얼핏 연산자가 아닌 것처럼 보이지만 다양한 용도로 사용되는 연산자입니다.
이 연산자는 어떠한 연산을 수행하는 것이 아니라 다음과 같은 상황에서 사용됩니다.
- 두 연산식을 하나의 연산식으로 나타내고자 할 때
- 둘 이상의 인수를 함수로 전달하고자 할 때
실행 결과
첫 번째 수는 15이고, 두 번째 수는 8입니다.
위의 예제에서 쉼표 연산자는 둘 이상의 변수를 동시에 선언하기 위해서 사용되었습니다.
또한, printf() 함수에서는 둘 이상의 인수를 동시에 printf() 함수로 전달하기 위해서 사용되었습니다.
sizeof 연산자
사용자의 컴퓨터 환경에 따라 타입에 할당되는 메모리의 크기가 달라질 수 있습니다.
sizeof 연산자는 단항 연산자로 피연산자의 크기를 바이트 단위로 반환합니다.
이 연산자는 피연산자로 타입뿐만 아니라 변수나 상수를 전달받을 수도 있습니다.
sizeof 연산자에 변수나 상수가 피연산자로 전달되면, 해당 변수나 상수에 해당하는 타입의 크기를 반환해 줍니다.
예제
int num01 = 15;
int num02 = 8;
int result;
result = (num01 > num02) ? num01 : num02;
printf("둘 중에 더 큰수는 %d입니다.\n", result);
실행 결과
둘 중에 더 큰수는 15입니다.
포인터 연산자
C언어에서 포인터와 연관되어 사용되는 연산자는 다음과 같습니다.
1. 주소 연산자(&)
2. 참조 연산자(*)
주소 연산자(&)는 변수의 이름 앞에 사용하여, 해당 변수의 주소값을 반환합니다.
'&'기호는 앰퍼샌드(ampersand)라고 읽으며, 번지 연산자라고도 불립니다.
참조 연산자(*)는 포인터의 이름이나 주소 앞에 사용하여, 포인터에 가리키는 주소에 저장된 값을 반환합니다.
C언어에서 '*'기호는 사용하는 위치에 따라 다양한 용도로 사용됩니다.
이항 연산자로 사용하면 곱셈 연산으로 사용되며, 포인터의 선언 시나 메모리에 접근할 때도 사용됩니다.
포인터 연산자에 대한 더 자세한 사항은 C언어 포인터 수업에서 확인할 수 있습니다.