C 프로그래밍 - 2주차 : 변수와 자료형
변수
-
변수 : 프로그램이 일시적으로 데이터를 저장하는 공간
- 실행 도중에 값이 변경될 수 있음
- 프로그램 내에서 반복적으로 사용될 경우 수정 용이
-
상수 : 변수에 저장할 실제 값
- 실행 도중에 값이 변경되지 않음
- 선언이 항상 필요
- 단 한 번의 선언이면 됨
-
변수의 선언(Declaration) : 변수 타입과 이름을 지정
- 변수의 종류가 같으면 연속 선언이 가능함
int a;
int b, c;
- 변수에 값을 대입(Assignment) : 좌항에 변수명, 우항에 대입할 값 입력
- 선언과 동시에 대입도 가능
int a;
a = 3;
int b = 123;
- 변수 선언 시 주의사항
- 변수의 이름은 알파벳, 숫자, 언더스코어로 구성
- C는 대소문자를 구분
- 변수의 이름은 숫자로 시작할 수 없음
- 키워드를 사용하면 안됨
- 공백이 포함될 수 없음
데이터의 표현 방식
- 비트 : 컴퓨터에서 표현하는 가장 작은 단위. 0, 1만 존재
- 진수 : 수를 세는 방법
- 2진수 : 표현 가능한 숫자는 0, 1
- 10진수 : 표현 가능한 숫자는 0~9
- 16진수 : 표현 가능한 숫자는 0
9, AF
- 바이트 : 비트 8개가 합쳐진 단위
진수의 변환
- 2진수 → 10진수
1 | 0 | 0 | 1 |
---|---|---|---|
* | * | * | * |
23 | 22 | 21 | 20 |
8 | 0 | 0 | 1 |
⇒ 8 + 0 + 0 + 1 = 9, 따라서 1001(2) = 9(10) |
- 2진수 → 16진수 2진수 4 자리가 16진수의 1 자리임.
1 | 1 | 0 | 1 |
---|---|---|---|
* | * | * | * |
23 | 22 | 21 | 20 |
8 | 4 | 0 | 1 |
⇒ 8 + 4 + 0 + 1 = 13(10) = D(16) |
- 10진수 → 2진수 12 / 2 = 6 … 0 6 / 2 = 3 … 0 3 / 2 = 1 … 1
몫이 1이 될 때 까지 나누고, 마지막 몫부터 위로 올라가면서 나머지를 이어서 쓰면 됨
12(10) = 1100(2)
자료형
- 자료형 : 데이터의 종류
- 정수형
데이터 형식 | 크기 | 값의 범위 |
---|---|---|
short | 2byte | -215(-32768) ~ 215-1(32767) |
unsigned short | 2byte | 0 ~ 216-1(65535) |
int | 4byte | -231(약 -21억) ~ 231 - 1 (약 21억) |
unsigned int | 4byte | 0 ~ 232 - 1 (약 42억) |
long int(or long) | 4byte | -231(약 -21억) ~ 231 - 1 (약 21억) |
unsigned long | 4byte | 0 ~ 232 - 1 (약 42억) |
-
unsigned = 부호 없음
- 부호를 구분하기 위한 비트를 사용하지 않아도 되어서 음수를 표현하기 위해 사용된 부분까지 양수로 표현가능
-
왜 양수부 크기에 자꾸 -1이 붙는가? = 0을 표현하기 위해 하나의 가짓수를 사용했기 때문임
-
long과 int가 동일함
-
정수끼리 연산하면 결과도 정수
- 다만 연산 시에 하나라도 실수가 들어가면 결과가 실수가 됨
-
실수형
데이터 형식 | 크기 | 값의 범위 |
---|---|---|
float | 4byte | 약 -3.4 x 1038 ~ 3.4 x 1038 |
double | 8byte | 약 -1.79 x 10308 ~ 1.79 x 10308 |
long double | 8byte | 약 -1.79 x 10308 ~ 1.79 x 10308 |
- 문자형
데이터 형식 | 크기 | 값의 범위 |
---|---|---|
char | 1byte | -27(-128) ~ 27 - 1(127) |
unsigned char | 1byte | 0 ~ 28-1(255) |
- 아스키 코드
아스키코드 | 10진수 | 16진수 |
---|---|---|
0 ~ 9 | 48 ~ 57 | 0x30 ~ 0x39 |
A ~ Z | 65 ~ 90 | 0x41 ~ 0x5A |
a ~ z | 97 ~ 122 | 0x61 ~ 0x7A |
- 0은 48, A는 65, a는 97 (알아두면 편함)
- 8비트 정수를 저장하는데 char형을 사용할 수 있음!
char ch = 'a' // == 97;
-
자료형의 크기 : sizeof(변수명) / sizeof(자료형)
-
정수형의 출력
- 10진수 : %d
- 16진수 : %X
- 8진수 : %o
-
변수와 메모리 관계
- 메모리는 바이트 단위로 나뉘며, 각 바이트에는 주소가 지정되어 있음
- 정수형 변수의 크기는 4바이트이므로, 정수형 변수를 선언하면 임의의 위치에 4바이트가 자리잡음
- 변수가 위치하는 곳을 ‘주소’라고 하며, 변수의 주소를 알려면 변수 앞에 ’&‘를 붙임
- a의 주소 = &a