본문 바로가기
Programming/C

[C언어] 삼항, 쉼표, sizeof, 포인터 연산자

by 고간디 2022. 5. 4.

삼항 연산자 (Ternary Operator)

삼항 연산자는 C언어에서만 존재하는 연산자입니다

다른 연산자들과는 다르게 피연산자를 3개 가지는 조건 연산자입니다

int num1 = 10;
int num2 = 12;

int result = (num1 > num2) ? num1 : num2;
printf(result);
12

(조건식) ? (반환값1) : (반환값2) 의 문법으로 구성됩니다

물음표 앞의 조건식이 참이라면 반환값 1을 출력하고, 거짓이라면 반환값 2를 출력하게 됩니다

 

위의 코드에서는 10인 num1이 12인 num2 보다 크지 않으므로 두 번째 반환값인 num2가 출력된 것입니다

 

이 삼항 연산자는 짧은 if else 문 대신에 사용할 수 있고 코드를 간결하게 만들어줍니다

 


쉼표 연산자

쉼표 연산자는 이름은 연산자이긴 하지만 실제로 어떤 연산을 수행하는 것은 아닙니다

두 연산식을 하나의 연산식으로 나타낼 때와 둘 이상의 인수를 함수로 전달하고자 할 때 사용하는 연산자입니다

int a = 1, b = 2;

printf("%d %d", a, b);
1 2

위 코드에서는 쉼표 연산자가 두 번 사용되었습니다

첫 번째로는 변수 a와 b를 동시에 지정할 때, 두 번째로는 printf 함수에서 두 인수를 동시에 printf() 함수로 전달할 때 사용되었습니다

 


sizeof 연산자

sizeof 연산자는 바이트의 크기를 계산해서 알려주는 단항 연산자입니다

int a = 1111;

printf("%d\n", sizeof(a))
printf("%d\n", sizeof(1111));

printf("%d\n", sizeof(1111.0);
printf("%d\n", sizeof(11.11);

printf("%d\n", sizeof(char));
printf("%d\n", sizeof(short));
printf("%d\n", sizeof(double));
4
4
8
8
1
2
8

위의 예제처럼 sizeof() 의 괄호 안에 변수나 상수를 피연산자로 넣을 수 있습니다

얼핏 보면 함수처럼 보이지만 함수가 아니라 연산자입니다

 

예제에서는 변수 a 와 1111은 int 형이기 때문에 int 형의 바이트 크기인 4가 출력됩니다

실수형인 1111.0과 11.11은 double 형의 바이트 크기인 8이 출력됩니다

 

괄호 안에는 char, short, double 등 자료형을 넣을 수도 있는데 각각의 바이트 크기인 1, 2, 8이 출력됩니다

 

여러 가지 자료형의 데이터 크기는 지난번 데이터 타입 정리글에서도 찾아볼 수 있습니다

[C언어] #4 데이터 타입 (tistory.com)

 

[C언어] #4 데이터 타입

데이터 타입(Data Type)이란 해당 데이터가 메모리에 어떤 형식으로 저장되고 어떻게 처리되어야 할 지를 명시적으로 알려주는 역할을 합니다 C언어에서는 여러 형태의 타입을 제공하고 있는데 이

hyungin0505.tistory.com


포인터 연산자

포인터 연산자에는 주소 연산자참조 연산자가 있습니다

 

주소 연산자는 &로 변수의 이름 앞에 사용하고, 그 변수의 주소값을 반환합니다

여기서 &는 앰퍼샌드(ampersand)라고 부르고, 번지 연산자라고 합니다

 

참조 연산자는 *로 포인터의 이름이나 주소 앞에 사용하고, 포인터에 가리키는 주소에 저장된 값을 반환합니다

 

C언어에서는 기호 *이 곱셈 연산이나 포인터 선언 등 사용하는 위치에 따라 다양한 용도로 사용됩니다

 

아직 포인터에 대해서 찾아보지 않아서 대충 이런 게 있다 하고 넘어가봅니다

728x90
반응형

댓글