이번 글은 C언어에서의 변수, 상수, 연산자에 대해서 공부한 내용을 정리하는 글
목차
C언어
1. 변수
1.1. 변수
- 데이터를 저장하는 임시 저장 공간
- 메모리 공간
데이터 : 변수에 저장되는 값, 변수에 저장된 데이터는 변경될 수 있다.
1.1. 변수의 종류
- 정수형 변수
- char형, short형, int형, long형
- 실수형 변수
- float형, double형, long double형
1.2. 변수 선언시 주의할 점.
- 변수 선언은 제일 앞쪽에 한다. (제일 앞쪽에 안하면 error 가능성 존재)
- 변수 이름은 의미 있게 짓는다.
- 변수 선언 시 안되는 사항
- 특수 기호, 공백 문자, 맨 처음에 숫자를 사용하면 안됨.
- C언어에서 사용되는 키워드를 변수 이름에 사용하면 안됨.
- 대소문자 구분
- ANSI에 표준화된 키워드들은 제외할 것
즉 내가 변수 var_a를 선언하면 운영체제는 메모리에다가 내가 선언한 변수명의 작은 공간을 만들어내고
그것의 주소는 &var_a이다.
1.3. 변수의 시작 주소
- 변수 앞에 &를 붙이면 변수의 시작 주소를 알 수 있다.
2. 상수
2.1. 상수란?
- 어떤 상황에도 변하지 않는 값을 의미
2.2. 상수의 종류
- 리터럴 상수 : 글자 그대로의 의미가 있어서 이름이 없는 상수
- 정수형 상수 (10진수, 16진수, 8진수)
- 10진수 (1,2,3,4 등)
- 16진수(0x1,0x2) : 엎에 0x를 붙임.
- 8진수(01, 02,03) : 앞에 0을 붙임. → ※ 파이썬에선 0o로 표현했음.
- 실수형 상수
- 문자 상수
- a,b,c와 같은 알파벳, ! @ #과 같은 특수 기호들 다 상수
- 문자열 상수
- 정수형 상수 (10진수, 16진수, 8진수)
- 심볼릭 상수 : 상수를 기호화하여 변수처럼 이름이 있는 상수
- const 키워드 이용하기
- #define문 이용하기
연산자
3.1. 연산자와 피연산자
- 연산자 : 연산을 수행하는 기호 (ex. +)
- 피연산자 : 연산에 참여하는 변수나 상수 값
3.2. 연산자의 종류
- 대입 연산자 (=)
- 데이터를 저장하는 연산자
- 우항에 있는 값을 왼쪽에 있는 변수에 대입하는 의미
- 산술 연산자 (사칙연산)
- 덧셈 : +
- 뺄셈 : -
- 곱하기 : *
- 나누기 : /
- 나머지 : %
- 복합 대입 연산자
- 산술 연산자와 대입 연산자를 하나로 나타내는 기호
- a += b → a+b를 먼저 수행한 후에 a에 값을 저장
- a -= b → a-b를 먼저 수행한 후에 a에 값을 저장
- a*= b → a*b를 먼저 수행한 후에 a에 값을 저장
- a /= b → a/b를 먼저 수행한 후에 a에 값을 저장
- a %= b → a%b를 먼저 수행한 후에 a에 값을 저장
- 산술 연산자와 대입 연산자를 하나로 나타내는 기호
- 증감 연산자
- ++, -- 기호를 이용하는 연산자 (1증가 또는 1감소 시키는 연산자)
- ++a : 선 증가 후 연산
- a++ :선 연산 후 증가
- --a : 선 감소 후 연산
- a-- : 선 연산 후 감소
- 아래의 코드블럭 1 참조.
- ++, -- 기호를 이용하는 연산자 (1증가 또는 1감소 시키는 연산자)
- 관계 연산자
- 관계를 비교하여 참과 거짓을 결론 짓는 연산자 (파이썬과 동일하므로 자세한 설명 생)
- >
- <
- >=
- <=
- ==
- !=
- 관계를 비교하여 참과 거짓을 결론 짓는 연산자 (파이썬과 동일하므로 자세한 설명 생)
- 논리연산자
- && : AND 연산자 (논리곱)
- 둘 다 True여야만 True, 둘 중 하나라도 False면 False
- || : OR 연산자 (논리합)
- 둘 중 하나만 True면 True, 둘 다 False 여야만 False
- ! : NOT 연산자 (논리 부정)
- True에 !하면 False , 단순하게 부정한다고 생각하면 됨.
- && : AND 연산자 (논리곱)
#include<stdio.h>
int main()
{
int num1 = 10, num2 = 10;
int a,b;
a = ++num1;
printf("%d, %d \n", a, num1); // 선 증가 후 연산 num1이 1증가하고 연산하니 둘다 11
b = num2++;
printf("%d, %d \n", b, num2); // 선 연산 후 증가 num2의 10이 b에 대입되고 num2 1 증가
return 0;
}
3.3. 비트 연산자
3.3.1. 비트와 바이트
비트 : 2진수 값 하나(0 또는 1)을 저장할 수 있는 최소 메모리 공간
바이트 : 8비트는 1바이트
※ 2진수를 16진수와 8진수로 표현하는 방법
3.3.2. 비트 연산자
- 데이터를 비트 단위로 처리하는 연산자
- & : 비트 단위 AND 연산 → 두 개의 비트 모두 1일때 1을 반환
- | : 비트 단위 OR 연산 → 둘 중 하나의 비트가 1일때 1을 반환
- ^ : 비트 단위 XOR 연산 → 두 개의 비트가 서로 같으면 0, 다르면 1을 반환
- ~ : 비트 단위 NOT 연산 → 1이면 0 0이면 1
- >> , << : 비트 이동 연산자
- ex. a << 3 왼쪽으로 세칸 이동
- 왼쪽으로 한칸씩 이동할때마다 2배씩 해준거나 마찬가지.
↓
3.4. 연산자 우선 순위
위처럼 다양한 종류의 연산자가 존재.
사칙연산도 곱하기를 먼저하는 거처럼 연산자에도 우선 순위가 존재.
가장 확실한 건 ()로 먼저 계산할 걸 잘 정리해서 식을 보기 좋게 만드는 게 더 중요
마무리
비트 연산자가 헷갈린다기보다는
이걸 10진수던 8진수던 16진수를 2진수로 변환하고 연산하는 과정이 헷갈릴 수 있다고 판단.
2진수에 익숙해져서 비트와 바이트 단위에 대한 이해 필요.
'IT > C' 카테고리의 다른 글
[C언어] 기초 내용 정리 (배열, 포인터 변수) (0) | 2023.03.24 |
---|---|
[C언어] 기초 내용 정리 (조건문, 반복문, 함수) (0) | 2023.03.23 |
[C언어] 기초 내용 정리 (C 언어의 기본 구조, 표준 입출력) (0) | 2023.03.22 |
댓글