37. 기타 연산자

C언어 – 대입, 증감, 기타 연산자
00:14 대입 연산자
01:09 [실습] 대입 연산자 l-value
01:42 [실습] 복합 대입 연산자
02:19 [실습] 대입 연산자 우선 순위
03:27 증감 연산자
03:57 [실습] 증감 연산자
05:15 기타 연산자
05:28 [실습] 콤마 연산자
06:30 [실습] 형 변환 연산자
07:05 [실습] sizeof 연산자
07:45 [실습] 삼항 조건 연산자

C언어에서는 이 외에도 여러 표현식을 나열하는 쉼표 연산자와 표현식 값의 형식을 변환할 때 사용하는 형변환 연산자, 표현식의 메모리 크기를 계산하는 sizeof, 조건에 맞게 특정 표현식을 사용하는 조건부 연산자등을 제공하고 있어요.

쉼표 연산자는 변수 선언 등에서 대등한 표현식을 나열할 때 사용할 수 있어요.

int i=0, j=0;

◈ 여러 개의 표현식을 나열하는 쉼표 연산자의 사용 예

#include <stdio.h>
enum _Gender{    FEMALE,    MALE  }; //열거형 정의문
int Compare(int a,int b); //함수 선언문
int main()
{
    int arr[3] = {1,2,3}; //배열 선언문
    int i=0, j=0;
    int gap=0;
    gap = Compare(i,j); //함수 호출문
    return 0;
}
int Compare(int a,int b) //함수 정의문
{
    return a-b;
}
 

형변환 연산자는 단항 연산자로 피연산자 앞에 소괄호와 소괄호 안에 변환을 원하는 형식을 명시해서 사용해요.
C언어에서는 char 형식과 int 형식 사이 등에서 개발자가 명시하지 않아도 묵시적으로 형변환을 제공하고 있죠.
언어에서 묵시적으로 형변환을 제공하지 않고 반드시 변환할 때만 형변환 연산자를 사용하세요.

◈ 정수 사이의 나누기 연산을 형변환 연산을 이용하여 계산하는 예

#include <stdio.h>
int main()
{
    int i = 8;
    printf("%d \n",i / 3);
    printf("%f \n",(float)i / 3);
    return 0;
}

◈ 실행 결과

2
2.666667

sizeof 연산자는 함수처럼 보이지만 표현식을 위해 할당해야 하거나 할당한 메모리 크기를 계산하는 연산자예요.
sizeof 연산자는 함수 호출식과 다름게 중괄호 안에 형식 이름을 사용할 수 있어요.

◈ sizeof 연산자로 메모리 크기를 계산하는 예

#include <stdio.h>
int main()
{
    int a;
    printf("a의 메모리 크기: %d 바이트 \n", sizeof(a));
    printf("int 형식의 메모리 크기: %d 바이트 \n", sizeof(int));
    return 0;
}

◈ 실행 결과

a의 메모리 크기: 4 바이트
int 형식의 메모리 크기: 4 바이트

C언어에서는 삼항 연산자로 조건부 연산자를 제공하고 있어요.
구문 중에 조건문을 사용하는 것이 코드를 분석하고 이해하기 쉽기 때문에 많이 사용하는 연산자는 아니예요.

표현식 ? 표현식 : 표현식

삼항 연산자를 사용하면 맨 앞의 표현식은 조건식이 와요.
조건식이 참이면 연산 결과는 두 번째 표현식의 값이고 거짓이면 세 번째 표현식의 값이예요.
따라서 첫 번째 표현식이 참이면 두 번째 표현식만 수행하고 거짓이면 세 번째 표현식만 수행한답니다.

◈ 삼항 연산자를 사용하는 예

#include <stdio.h>
int main()
{
    int i = 3, j = 2;
    printf("%d \n", (i>j)? i: j);
    return 0;
}

◈ 실행 결과

3

이 외에도 주소를 얻어오는 연산이나 배열과 포인터를 선언할 때 사용하는 연산 및 배열과 포인터, 구조체, 공용체를 사용할 때 필요한 연산들이 있는데 이들에 관한 사항은 뒤에서 다룰게요.