삼항 연산자 (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이 출력됩니다
여러 가지 자료형의 데이터 크기는 지난번 데이터 타입 정리글에서도 찾아볼 수 있습니다
포인터 연산자
포인터 연산자에는 주소 연산자와 참조 연산자가 있습니다
주소 연산자는 &로 변수의 이름 앞에 사용하고, 그 변수의 주소값을 반환합니다
여기서 &는 앰퍼샌드(ampersand)라고 부르고, 번지 연산자라고 합니다
참조 연산자는 *로 포인터의 이름이나 주소 앞에 사용하고, 포인터에 가리키는 주소에 저장된 값을 반환합니다
C언어에서는 기호 *이 곱셈 연산이나 포인터 선언 등 사용하는 위치에 따라 다양한 용도로 사용됩니다
아직 포인터에 대해서 찾아보지 않아서 대충 이런 게 있다 하고 넘어가봅니다
'Programming > C' 카테고리의 다른 글
[C언어] 섭씨/화씨 변환, scanf( ) 함수 취약점 (0) | 2024.03.13 |
---|---|
[C언어] 연산자 우선 순위, 컴파일, 진법 변환, 선언 (0) | 2024.03.12 |
[C언어] 논리 연산자와 비트 연산자 (0) | 2022.05.02 |
[C언어] 연산자 - 증감 연산자와 비교 연산자 (0) | 2022.04.01 |
[C언어] 연산자 - 산술 연산자와 대입 연산자 (0) | 2022.04.01 |
댓글