5. 비교 연산자
a. 비교 연산자란?
🌟 피연산자 사이의 상대적인 크기를 판단하는 연산자
b. 비교 연산의 특징
- 두 개의 피연산자를 가지는 이항 연산자
- 피연산자들의 결합 방향 : ➡
c. 비교 연산자의 종류
증감 연산자 | 설명 |
== | 왼쪽의 값과 오른쪽 값이 같으면 1 |
!= | 왼쪽 값과 오른쪽 값이 같지 않으면 1 |
> | 왼쪽 값이 오른쪽 값보다 크면 1 |
>= | 왼쪽 값이 오른쪽 값보다 크거나 같으면 1 |
< | 왼쪽 값이 오른쪽 값보다 작으면 1 |
<= | 왼쪽 값이 오른쪽 값보다 작거나 같으면 1 |
💙 INFO
컴퓨터에서 참(true)은 보통 1로 표현되고, 거짓(false)은 0으로 표현되지만
C언어에서는 참(true)은 0이 아닌 모든것, 거짓(false)은 동일하게 0
d. 비교 연산자의 예시
🤓 예제
int num01 = 3;
int num02 = 7;
printf("== 연산자에 의한 결괏값은 %d입니다.\n", num01 == num02);
printf("<= 연산자에 의한 결괏값은 %d입니다.\n", num01 <= num02);
✨ 실행결과
== 연산자에 의한 결괏값은 0입니다.
<= 연산자에 의한 결괏값은 1입니다.
6. 논리 연산자
a. 논리 연산자란?
🌟 주어진 논리식을 판단하여, 참(true)과 거짓(false)을 결정하는 연산자
b. 논리 연산의 특징
1) AND / OR 연산자
- 두 개의 피연산자를 가지는 이항 연산자
- 피연산자들의 결합 방향 : ➡
2) NOT 연산자
- 단항 연산자
- 피연산자들의 결합 방향 : 👈
c. 논리 연산자의 종류
논리 연산자 | 설명 |
&& | 논리식이 모두 참이면 1을 반환함. (논리 AND 연산) |
|| | 논리식 중에서 하나라도 참이면 1을 반환함. (논리 OR 연산) |
! | 논리식의 결과가 참이면 0을, 거짓이면 1을 반환함. (논리 NOT 연산) |
d. 논리 연산자의 진리표
A | B | A && B | A || B | !A |
1 (true) | 1 (true) | 1 (true) | 1 (true) | 0 (false) |
1 (true) | 0 (false) | 0 (false) | 1 (true) | 0 (false) |
0 (false) | 1 (true) | 0 (false) | 1 (true) | 1 (true) |
0 (false) | 0 (false) | 0 (false) | 0 (false) | 1 (true) |
e. 논리 연산자의 예시
🤓 예제
int num01 = 3;
int num02 = -7;
int result01, result02;
result01 = (num01 > 0) && (num01 < 5);
result02 = (num02 < 0) || (num02 > 10);
printf("&& 연산자에 의한 결괏값은 %d입니다.\n", result01);
printf("|| 연산자에 의한 결괏값은 %d입니다.\n", result02);
printf(" ! 연산자에 의한 결괏값은 %d입니다.\n", !result02);
✨ 실행결과
&& 연산자에 의한 결괏값은 1입니다.
|| 연산자에 의한 결괏값은 1입니다.
! 연산자에 의한 결괏값은 0입니다.
7. 비트 연산자
아래에 자세하게 정리해놓음
8. 삼항 연산자
a. 삼항 연산자란?
🌟 조건식의 참 거짓을 따져 반환값(값, 수식, 함수 호출 등)을 달리 할 수 있는 연산자
조건식의 값이 참이면 반환값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의 주소값은 변하지 않고, 데이터도 엉뚱한 값으로 출력됨
출처 : https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=ahalinux&logNo=220878857643
'프로그래밍 언어 > C' 카테고리의 다른 글
[자료형(data type)] C 파생형 함수 총정리 (0) | 2023.08.17 |
---|---|
C 제어문 총정리 (조건문, 반복문, 기타 제어문) (0) | 2023.08.17 |
C 연산자 총정리 -1 (산술, 대입, 증감) (0) | 2023.08.16 |
[자료형(data type)] 기본형 총정리 (0) | 2023.08.16 |
C 상수 총정리 (0) | 2023.08.16 |