본문 바로가기

Study/C

2,1 변수와 자료형

변수

변수 : 단 하나의 값을 저장할 수 있는 메모리 공간

  • 변수를 사용하기 위해서는 우선 선언을 해 주어야 한다. ex) int age;

  • 변수를 초기화하기 전에는 쓰레기값이 저장되어 있다.

    Why? 메모리를 지우지 않고 계속 덮어 쓰기 때문에 다른 프로그램에 의한 쓰레기값이 남아 있는 것.

  • 변수의 초기화 : ex) int age = 25;

* 예전 컴파일러에서는 선언문과 초기화를 섞어 쓰면 에러가 나기도 한다.


  
int age;
age = 25;
int grade;

//에러발생


int age;
int grade;
age = 25;

//OK


  
int age;
age = 25;
int grade;

//에러발생


  
int age;
int grade;
age = 25;

//OK




변수의 값 교환하기

x와 y의 값을 바꿔보자.

  
int x=10;
int y=20;
int temp;
temp = x; //temp = 10;
x = y; //x = 20;
y = temp; //y = 10;







자료형

자료형(data type)에 따라 값이 저장될 공간의 크기/형식이 다르다.

즉, 자료형이 제공하는 정보는

  1. 변수가 차지하는 저장공간의 크기

  2. 변수의 저장형식(저장방법 + 해석방법)

저장공간을 효율적으로 사용하기 위해서는 맞는 크기의 타입을 이용해야 한다.

자료형의 종류

자료형은 기본형 / 파생형으로 나눌 수 있다.

기본형(basic type)
문자형char
정수형short, int, long, long long
실수형float, double, long double

파생형(derived type)
배열(array)같은 타입, 여러 변수
구조체(structure)다른 타입, 여러 변수
공용체(union)다른 타입, 여러 변수, 하나의 저장공간 공유
포인터(pointer)메모리 주소 저장
함수(function)함수




기본형
  1. 문자형 - char

    • 문자 하나를 저장

    • C에는 String이 없다 → char[] 이용

    • 빈칸 문자 저장 가능(단, 띄워서 써야 함)

    •   
      char ch = 'A';
      char str[] = "ABC";
      char ch2 = 65; //아스키코드 65 == 문자 A
      char blankError = ''; //Error
      char blank = ' '; //OK.

  2. 정수형 - short, int, long, long long

    • 값의 범위 : short < int < long < long long

    • 자료형별 표현 가능한 값:

      자료형크기(bit)크기(byte)값의 범위
      char81-27 ~ 27-1
      short162-215 ~ 215-1
      int324-231 ~ 231-1
      long324-231 ~ 231-1
      long long648-263 ~ 263-1
    • 자료형별로 저장가능한 값의 범위:

      n비트로 표현 할 수 있는 정수의 개수: 2n

      부호있는 n비트 정수의 표현범위 : -2n-1 ~ 2n-1 -1

    • unsigned: "부호 없는 정수타입"

      값을 저장할 수 있는 크기는 같으나, 양의 정수만 저장하기 때문에 부호 있는 정수보다 양수의 범위가 2배 더 넓다.

      int가 -100~ 99까지 저장한다면, unsigned int는 0~200까지 저장하는 것.

      정수형+char에 사용 가능. 실수형에는 사용 불가

      ex) unsigned int i = 100;


  3. 실수형 - float, double, long double

    • 실수를 저장하기 위한 타입

    • 정밀도: n째 자리까지를 오차 없이 표현할 수 있다는 뜻. float의 정밀도가 7자리다? == 10진수로 7자리까지 오차없이 저장할 수 있다는 말.

    • 타입정밀도크기(byte)
      float7자리4 byte
      double15자리8 byte
      long double15자리8 byte


    * 실수형의 범위는 정수형처럼 -2n-1 ~ 2n-1 -1 이 아니다!!



'Study > C' 카테고리의 다른 글

3.1 연산자  (0) 2018.07.19
2.3 진법 , 기본형  (0) 2018.07.19
2.2 sizeof, 화면입출력, 상수, 리터럴  (0) 2018.07.16
2. Hello, World!  (0) 2016.12.20
1. 기초부터  (1) 2016.12.20