🌟 조건식의 참 거짓을 따져 반환값(값, 수식, 함수 호출 등)을 달리 할 수 있는 연산자
조건식의 값이 참이면 반환값1, 거짓이면 반환값 2를 반환함
짧은 if / else 문 대신에 사용할 수 있으며, 코드를 간결하게 작성할 수 있도록 도와줌
📘 문법
조건식 ? 반환값1 : 반환값2
b. 삼항 연산의 특징
피연산자를 세개나 가짐
if / else 문 대신 사용 가능
c. 삼항 연산의 예시
🤓 예제
int num01 = 15;
int num02 = 8;
int result;
result = (num01 > num02) ? num01 : num02;
printf("둘 중에 더 큰수는 %d입니다.\n", result);
✨ 실행결과
둘 중에 더 큰수는 15입니다.
9. 쉼표 연산자
a. 쉼표 연산자란?
🌟 어떠한 연산을 수행하는 것이 아니라 두 연산식을 하나로 나타내거나, 둘 이상의 인수를 함수로 전달하고자 할 때 사용
b. 쉼표 연산의 예시
🤓 예제
int num01 = 15, num02 = 8; //동시 선언
printf("첫 번째 수는 %d이고, 두 번째 수는 %d입니다.\n", num01, num02); //동시 전달
✨ 실행결과
첫 번째 수는 15이고, 두 번째 수는 8입니다.
10. sizeof 연산자
a. sizeof 연산자란?
🌟 피연산자 형식의 개체를 저장하기 위해 필요한 스토리지 공간(바이트)을 제공하고 알려주는 역할
사용자의 컴퓨터 환경에 따라 타입에 할당되는 메모리의 크기가 달라질 수 있어서 이 연산자를 사용하면 컴퓨터 환경에서의 타입 크기를 알아볼 수 있음
📘 문법
sizeof 표현식
sizeof (자료형/표현식)
b. sizeof 연산자의 예시
🤓 예제
char a;
int b;
double d;
puts("\n C언어 sizeof 연산자 \n");
printf(" a = %d byte \n", sizeof(a));
printf(" b = %d byte \n", sizeof(b));
printf(" d = %d byte \n", sizeof d);
puts("\n 시스템이 자동으로 인식하는 크기 ");
printf(" # = %d byte \n", sizeof('#'));
printf(" 50 = %d byte \n", sizeof(50));
printf(" 4.153 = %d byte \n", sizeof(4.153));
printf(" kim = %d byte \n", sizeof("kim"));
✨ 실행결과
C언어 sizeof 연산자
a = 1 byte
b = 4 byte
d = 8 byte
시스템이 자동으로 인식하는 크기
# = 4 byte; //컴파일러에 따라 다르지만 내부적으로 4byte에 저장되었음
50 = 4 byte; //정수형 리터럴 상수는 4byte에 저장되었음
4.153 = 8 byte;
kim = 4 byte; //문자열 끝을 나타내는 null을 사용하기 위해 1byte 더 사용
11. 포인터 연산자
a. 포인터 연산자 (*)
🌟 포인터 변수 주소 값에 있는 데이터
++ 예전에 변수를 공부하면서 배웠듯, 변수는 데이터가 저장된 주소와, 데이터의 길이나 형태에 관한 정보도 같이 기억해야 한다!!
b. 주소 연산자 (&) = 번지 연산자 = 참조 연산자
🌟 변수의 이름 앞에 사용하여, 해당 변수의 주소값을 반환
'&'기호는 앰퍼샌드(ampersand)라고 읽음
c. 포인터 연산자의 예시
1) 일반적 포인터 연산자의 값 참조
🤓 예제
int *p; //p는 int 자료형을 가진 포인터 변수이다
int a = 2; //a는 int 자료형을 가진 변수이고, 값은 2이다
p = &a; // p는 a의 주소값을 참조한다
printf("%d\n", p); //부호 있는 10진 정수 서식으로 p를 출력한다
printf("%d\n", *p); //부호 있는 10진 정수 서식으로 p의 데이터를 출력한다
✨ 실행결과
62255352 // 변수의 주소
2 // 값 출력
2) 포인터 변수가 가리키는 변수 값 참조
🤓 예제
int *p;
*p = 4;
printf("%d\n", p);
printf("%d\n", *p);
✨ 실행결과
14547184 // 변수의 주소
4 // 값 출력
💥 WARNING
*이 붙은 변수는 무조건 데이터를 받아와야 하는데, 위의 예시에서 이미 *p라고 포인터 변수라고 선언한 변수에 p = 4라고 해버리면 주소값을 가르켜야 하는 곳에 데이터를 대입해버려서 치명적 오류가 생김
비슷한 경우로 *p = &b를 하는 경우에도 p의 주소값은 변하지 않고, 데이터도 엉뚱한 값으로 출력됨