C_변수

심야·2023년 7월 14일
0

컴퓨터 과학

목록 보기
6/12
post-thumbnail

본 글은 이재범님의 모두의 코드 : 씹어먹는 C 언어 강좌를 정리합니다.

저장방식

컴퓨터는 많은 내용들을 기억해야 한다.
컴퓨터는 데이터들을 RAM 이라는 기억공간에 기록한다.
아래의 그림은 RAM 이다.

RAM.png

각각의 방에 데이터들이 저장되며 각 방은 1번, 2번, 3번 식으로 이름이 있다.
32비트 CPU는 최대 2³²개(4GB) 총 42억개의 방을 가질 수 있다.
방들의 주소는 16진수로 주소값을 나타낸다.
방 한칸은 1 바이트, -128 ~ 127 까지의 수 데이터를 저장할 수 있다.

주소값 예시 : 0x12345678

변수 : variable

냉장고에 사과를 넣어놨다 생각해보자.
동생이 "사과 어디있어?" 라고 물어 형이 "응 사과 0x12345678에 있어" 라고 답하면 얼마나 불편할까? 형 입장에선 말하기 힘들고 동생입장에선 기억하기 힘들다.
다행히도 이런 불편함을 해소하기 위해 변수가 존재한다.

다시 동생이 사과 어디있냐는 장면을 생각해보자.
"형 사과 어디있어?"
"사과? 냉장고에 있어"
형은 말하기 쉽고 동생은 기억하기 쉽다.
16진수 주소 대신 냉장고 라고 표현해 사람이 쉽게 기억할 수 있게 해주는 것이 변수다.

이제 컴퓨터 입장에서 생각해보자.

사과 100개를 냉장고라는 변수에 저장했다.
그러면 컴퓨터는 알아서 메모리의 어딘가냉장고의 방을 주고 사과 100개를 저장한다.
만약 컴퓨터가 냉장고 변수에게 4개의 방을 할당했다면 메모리 상에 아래 그림처럼 표시된다.

메모리.png

갑자기 친구가 사과 10개를 줘서 사과 10개를 냉장고에 넣어야 된다 생각해보자.
사과 10개를 넣어야한다면 0x12345678 부터 0x12345678B까지 모든 내용을 불러와
10개를 더하고 다시 집어넣는 과정을 직접 해야한다.
하지만 변수를 사용하면 냉장고 = 냉장고 + 10라고 표현해주기만 하면 된다.
변수란 이렇게 바뀔 수 있는 값을 보관하는 곳이다.

변수 선언

#incldue <stdio.h>
int main()
{	
  int a = 10;
  
  printf("a is %d\n", a);
  return 0;
}

int : int형의 데이터를 보관한다.
-2147483648 에서 부터 2147483648 까지의 정수를 보관한다는 의미다.
보관범위를 넘어서면 에러가 발생한다.

int는 보통 signed int를 뜻한다.
음수와 양수 모두 표현하는 대신 양수로 표현하는 범위가 줄어든다.
unsigned int양수만을 표현할 수 있는 대신, 양수로 표현할 수 있는 범위가 두 배로 늘어난다.

#include <stdio.h>
int main() 
{
  int a;
  a = 127;
  printf("a 의 값은 %d 진수로 %o 입니다. \n", 8, a);
  printf("a 의 값은 %d 진수로 %d 입니다. \n", 10, a);
  printf("a 의 값은 %d 진수로 %x 입니다. \n", 16, a);
  return 0;
}

%d10진수 정수를 의미한다.
%o8진수 정수를 의미한다.
%x16진수 정수를 의미한다.

float a = 3.141592f;
double b = 3.141592;

printf("a : %f \n", a);
printf("b : %f \n", b);

floatdouble은 실수를 의미한다.
float은 변수 선언 시 숫자 뒤에 f를 붙인다.

실수형 변수는 %f형식을 사용한다.
수를 표현하기 위해 %f 사용 시 소수점을 붙여야 한다. printf("%f\n", 1.0);

#include <stdio.h>
int main() 
{
  float a = 3.141592f;
  double b = 3.141592;
  int c = 123;
  printf("a : %.2f \n", a);
  printf("c : %5d \n", c);
  printf("b : %6.3f \n", b);
  return 0;
}

%.2f무조건 소수점 2자리까지 출력하라는 의미다.

%5d는 숫자의 자리수를 5자리로 출력하라는 의미다.
%.?f는 소수점을 ?의 수 만큼 소수점 자리수를 맞추라 강제하지만
%5d는 강제하지 않는다.

%6.3f는 자리수는 6자리까지, 소수점 이하 3자리까지 표시하라는 의미다.


Reference

https://modoocode.com/7

profile
하루하루 성실하게, 인생 전체는 되는대로.

0개의 댓글

관련 채용 정보