수식(expression)
: 수학 표기와 수학 기호를 사용하여 수학적 관계를 나타내는 것
- 숫자, 상수, 변수, 연산자의 조합
- 연산자와 피연산자로 나뉜다.
<연산자의 분류>
피연산자 수에 따른 연산자 분류
- 단항 연산자 : 피연산자의 수가 1개 : ++x; y—;
- 이항 연산자 : 피연산자의 수가 2개 : x + y; x - y;
- 삼항 연산자 : 연산자의 수가 3개 : x > y ? x : y;
산술 연산자
: 덧셈, 뺄셈, 곱셈, 나눗셈 등 사칙 연산을 수행
- 컴퓨터의 가장 기본적인 연산
💡 나눗셈 연산자
정수형끼리의 나눗셈에서는 결과가 정수형으로 생성하고 소수점 이하는 버려진다.
💡 나머지 연산자
- 첫 번째 피연산자를 두 번째 피연산자로 나누었을 경우의 나머지를 계산
- 나머지 연산자를 이용한 짝수와 홀수 구분
EX) x % 2가 0이면 짝수
- 나머지 연산자를 이용한 5의 배수 판단
EX) x % 5가 0이면 5의 배수
- 나머지 연산자 응용 프로그램
#include <stdio.h>
#define SEC_PER_MINUTE 60
int main(void)
{
int input, minute, second;
printf("초를 입력하시오. : ");
scanf("%d", &input);
minute = input / SEC_PER_MINUTE;
second = input % SEC_PER_MINUTE;
printf("%d초는 %d분 %d초 입니다.\n", input, minute, second);
return 0;
}
부호 연산자
: 변수나 상수의 부호를 변경
x = -10;
y = -x; // 변수 y의 값은 10이 된다.
증감 연산자
: 변수의 값을 하나 증가시키거나 감소시키는 연산자
y = ++x; // 증가된 x의 값이 y에 대입(전위)
y = x++; // 먼저 대입 후 나중에 증가(후위)
#include <stdio.h>
int main(void)
{
int x=10, y=10;
printf("x=%d\n", x);
printf("++x의 값=%d\n", ++x);
printf("x=%d\n\n", x);
printf("y=%d\n", y);
printf("y++의 값=%d\n", y++);
printf("y=%d\n", y);
return 0;
}
대입 연산자
: 연산자 기준 좌측의 변수 값에 우측 값을 할당한다.
y = 10 + (x = 2 + 7); // x = 9, y = 19
💡 대입 연산자는 연산순서가 오른쪽에서 시작한다!
복합 대입 연산자
: 대입 연산자(=)와 산술 연산자(+-/*%)를 합쳐 놓은 연산자
- 소스를 간결하게 만들 수 있다.
관계 연산자
: 두 개의 피연산자를 비교하는 연산자
- 결과 값은 참(1) 아니면 거짓(0)
#include <stdio.h>
int main(void)
{
int x, y;
printf("두개의 정수를 입력하시오: ");
scanf("%d%d", &x, &y);
printf("x == y의 결과값: %d\n", x == y);
printf("x != y의 결과값: %d\n", x != y);
printf("x > y의 결과값: %d\n", x > y);
printf("x < y의 결과값: %d\n", x < y);
printf("x >= y의 결과값: %d\n", x >= y);
printf("x <= y의 결과값: %d\n", x <= y);
return 0;
}
📢 대입 연산자(=)와 관계연산자(==) 헷갈리지 않기!
논리 연산자
: 여러 개의 조건을 조합하여 참과 거짓을 따지는 연산자
- 결과값은 참(1) 아니면 거짓(0)
💡 컴퓨터는 0(거짓_False)이외의 값은 모두 참(True)으로 판단한다!
#include <stdio.h>
int main(void)
{
int x, y;
printf("두개의 정수를 입력하시오: ");
scanf("%d%d", &x, &y);
printf("%d && %d의 결과값: %d\n", x, y, x && y);
printf("%d || %d의 결과값: %d\n", x, y, x || y);
printf("!%d의 결과값: %d\n", x, !x);
return 0;
}
단축 계산
- && 연산, || 연산의 경우첫 번째 연산의 결과가 참이 아니면 두 번째 연산 수행 X
- & 연산, | 연산의 경우첫 번째 연산의 결과가 참이 아니어도 두 번째 연산 수행
조건 연산자
max_value = (x > y) ? x : y;
- x > y 가 참이면 x 가 수식의 값이 된다.
- x> y 가 거짓이면 y 가 수식의 값이 된다.
#include <stdio.h>
int main(void)
{
int x, y;
printf("첫 번째 수 = ");
scanf("%d", &x);
printf("두 번째 수 = ");
scanf("%d", &y);
printf("큰 수 = %d \n", (x > y) ? x : y);
printf("작은 수 = %d \n", (x < y) ? x : y);
return 0;
}
콤마 연산자
: 콤마로 연결된 수식은 순차적으로 계산
x++, y++;
비트 연산자
: 비트 단위의 연산을 할 때 사용
#include <stdio.h>
int main(void)
{
/*'%08x'
'08' 8진수로 표현
'%x' : 8진수 형식 지정자*/
printf("AND : %08X \n", 0x9 & 0xA);
printf("OR : %08X \n", 0x9 | 0xA);
printf("XOR : %08X \n", 0x9 ^ 0xA);
printf("NOT : %08X \n", ~0x9);
printf("<< : %08X \n", 0x4 << 1);
printf(">> : %08X \n", 0x4 >> 1);
return 0;
}
💡 XOR을 이용한 암호화 알아보기!
#include <stdio.h>
int main(void)
{
/*'%08x'
'08' 8진수로 표현
'%x' : 8진수 형식 지정자*/
printf("AND : %08X \n", 0x9 & 0xA);
printf("OR : %08X \n", 0x9 | 0xA);
printf("XOR : %08X \n", 0x9 ^ 0xA);
printf("NOT : %08X \n", ~0x9);
printf("<< : %08X \n", 0x4 << 1);
printf(">> : %08X \n", 0x4 >> 1);
return 0;
}
형 변환(type conversion)
: 실행 중 데이터 타입을 변경하는 것
묵시적 형 변환
자료형의 크기가 작은 자료형에서 큰 자료형으로 컴파일러가 자동으로 처리한다.
명시적 형 변환
(int)3.141592 //int형으로 명시적으로 형 변환
보통 묵시적 형변환이 안되는 경우(크기가 큰 자료형에서 작은 자료형)에 사용
연산자 우선 순위
아래 노션 페이지에 C 공부 내용에 대해 업로드 합니다!
수정사항이나 질문사항의 경우 노션 댓글로 남겨주세요!(*•̀ᴗ•́*)و ̑̑
개발 환경
작성 플랫폼
'🧑💻 Language > C·C++' 카테고리의 다른 글
[C 이론] 7. 반복문 (0) | 2021.05.03 |
---|---|
[C 이론] 6. 조건문 (0) | 2021.05.03 |
[C 이론] 4. 변수와 자료형 (0) | 2021.05.03 |
[C 이론] 3. C프로그램 구성요소 (0) | 2021.05.03 |
[C 이론] 2. C프로그램 작성 (0) | 2021.05.03 |