C언어 - 변수, 자료형, 상수

Jocy·2022년 4월 29일
0
post-thumbnail

앞서 C언어에 관한 기본적인 것을 정리해 보았습니다.
두번째 시간으로 변수, 자료형, 상수등에 관해서 알아보겠습니다.

변수란?

프로그래밍에 있어서 변수라는 건 숫자, 문자와 같은 값들을 저장하는 공간을 의미합니다.

RPG 게임을 예로 들면 실시간으로 변화하는 캐릭터의 레벨, 체력, 공격력, 방어력 같은 수치들을 제대로 저장하고 있지 않다면 문제가 생길 수 있습니다. 이러한 일들이 생기지 않기 위해서 프로그램을 구성하고 있는 값들을 변수에 저장합니다.

변수를 만드는 법

  1. 변수의 자료형을 정해주어야 합니다.
  2. 변수에는 변수명(이름)이 필요합니다. 적절한 이름(level, hp, damage, defense)을 정해 선언합니다.
  3. = 을 이용해서 적절한 값을 대입해줍니다.
    변수는 "변화할 수 있는 수" 라는 뜻을 지니고 있고 대입을 통해 언제든지 값을 변화시킬 수 있습니다.
  4. 변수를 먼저 선언 후 값을 대입할 수도 있고, 변수를 선언하면서 동시에 대입할 수 있습니다.
    선언과 동시에 값을 대입하는 것을 초기화라 합니다.

변수를 선언 후 대입

#include <stdio.h>

int main()
{
  int level;
  int hp;
  int damage;
  int defense;
  
  level = 1;
  hp = 50;
  damage = 5;
  defense = 2;
  
  return 0;
}

변수 선언과 동시에 대입 (초기화)

#include <stdio.h>

int main()
{
  int level = 1;
  int hp = 50;
  int damage = 5;
  int defense = 2;
  
  defense = 5; // 대입을 통해 변수의 값을 바꿀 수 있다
  
  return 0;
}

자료형이란?

자료형(Data Type)이란 변수의 종류를 의미합니다.
변수에 값을 담기 이전에, 정수, 실수, 문자, 문자열 등 어떤 값을 가질 것인지 미리 정해줘야 합니다.

정수형과 실수형

char : 문자를 표시
short, int, long, long long : 숫자를 표시, 종류에 따라 좀 더 크거나 작은 숫자를 표시

정수형의 종류 : char(1), short(2), int(4), long(4), long long(8)
실수형의 종류 : float(4), double(8), long double(8+)

괄호는 크기(바이트)를 나타낸 것 입니다.
실수형의 경우에는 크기별로 더 큰 숫자, 많은 소수점을 나타낼 수 있습니다.

부호에 따른 변수 구분(정수형에서 사용)

부호가 있는 변수 signed : 기본(default) 형식으로 음수, 양수 둘 다 표현 가능
부호가 없는 변수 unsigned : 음수를 표현할 수 없고, 양수 값의 표현범위가 2배 정도 늘어남

비트와 바이트

자료형의 크기를 byte로 표현합니다. byte 이전에 bit의 개념에 대해 알아야 합니다.
비트는 컴퓨터가 처리할 수 있는 데이터의 최소 단위로, 하나의 bit는 0 혹은 1 의 값을 가지고 있습니다.
하나의 bit로는 표현할 수 있는 영역이 0 과 1 밖에 없으므로 값을 표현하기 위해 bit 8개가 모여 만들어진 것이 byte입니다.
bit 8개가 모이면 이진수를 이용하여 값을 2의 7승128개의 양수(0 ~ 127)와 128개의 음수(-1 ~ -128)를 만들 수 있습니다.

bit 16개가 모여 2byte가 되면 이진수를 이용하여
값을 양수는 2의 15승 -1(32,767개), 음수 -32,768 까지 표현합니다.
-1을 하는 이유는 0을 포함하기 때문입니다.

형식 지정자

printf를 이용해서 변수를 출력하거나 scanf로 입력을 받을 때 형식 지정자를 이용해야 합니다.

%d : int - 부호 있는 10진 정수
%u : unsigned int - 부호 없는 10진 정수
%f : float, double - 부호 있는 10진 실수
%c : char - 단일 문자 및 부호 있는 10진 정수
%hhu : unsigned char - 부호 없는 10진 정수
%s : char[] char배열 - 문자열

%lf : double 자료형은 scanf로 입력을 받을때 %lf로 받아야 합니다.

상수란?

변수는 값을 바꿀 수 있지만 상수는 값을 바꿀 수 없는 것을 말합니다.
상수를 선언할 때는 자료형 앞에 const만 붙이면 됩니다.
상수는 처음 정의할 때 무조건 값을 입력해야 합니다.

상수를 사용할 시 에러가 나는 경우

#include <stdio.h>

int main()
{
	const double PI = 3.1415;

	PI = 5;

	return 0;
}

위의 코드를 자세히보면 상수의 정의와 같이 처음에 정의를 할 때 입력한 값이 있습니다.
하지만 이후에 PI = 5를 선언해서 PI의 값을 바꾸려고 했습니다.
해당 파일을 컴파일하게되면 error: assignment of read-only variable 라는
에러가 떠서 읽을 수만 있다고 알려줍니다.

상수를 사용하는 이유

상수를 사용하는 이유는 바로 값의 안정성 때문입니다.
절대 바꾸지 않을 값을 선언해 놓으면 코드가 실행되다가 변경 시키려고 하더라도
컴파일 에러를 내기 때문에 실수를 방지할 수 있습니다.
바꾸지 않을 값에 대해서는 const를 사용하는 습관을 들여야 합니다.

profile
Software Engineer

0개의 댓글