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진수 : 표현 가능한 숫자는 09, AF
  • 바이트 : 비트 8개가 합쳐진 단위

진수의 변환

  • 2진수 10진수
1001
****
23222120
8001
8 + 0 + 0 + 1 = 9, 따라서 1001(2) = 9(10)
  • 2진수 16진수 2진수 4 자리가 16진수의 1 자리임.
1101
****
23222120
8401
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)

자료형

  • 자료형 : 데이터의 종류
  • 정수형
데이터 형식크기값의 범위
short2byte-215(-32768) ~ 215-1(32767)
unsigned short2byte0 ~ 216-1(65535)
int4byte-231(약 -21억) ~ 231 - 1 (약 21억)
unsigned int4byte0 ~ 232 - 1 (약 42억)
long int(or long)4byte-231(약 -21억) ~ 231 - 1 (약 21억)
unsigned long4byte0 ~ 232 - 1 (약 42억)
  • unsigned = 부호 없음

    • 부호를 구분하기 위한 비트를 사용하지 않아도 되어서 음수를 표현하기 위해 사용된 부분까지 양수로 표현가능
  • 왜 양수부 크기에 자꾸 -1이 붙는가? = 0을 표현하기 위해 하나의 가짓수를 사용했기 때문임

  • long과 int가 동일함

  • 정수끼리 연산하면 결과도 정수

    • 다만 연산 시에 하나라도 실수가 들어가면 결과가 실수가 됨
  • 실수형

데이터 형식크기값의 범위
float4byte약 -3.4 x 1038 ~ 3.4 x 1038
double8byte약 -1.79 x 10308 ~ 1.79 x 10308
long double8byte약 -1.79 x 10308 ~ 1.79 x 10308
  • 문자형
데이터 형식크기값의 범위
char1byte-27(-128) ~ 27 - 1(127)
unsigned char1byte0 ~ 28-1(255)
  • 아스키 코드
아스키코드10진수16진수
0 ~ 948 ~ 570x30 ~ 0x39
A ~ Z65 ~ 900x41 ~ 0x5A
a ~ z97 ~ 1220x61 ~ 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