본문 바로가기
프로그래밍/C언어

1. c언어 상수, 변수, 메모리

by 수삼이는코딩중 2023. 1. 10.
728x90
프로그래밍

C를 배워야 하는 이유

  • 컴퓨터 작동에 대한 전반적인 이해
  • 알고리즘 & 자료구조 수업 예습
  • 선 파이썬 , 후 C를 추천한다

기본베이스

#include <stdio.h>

int main() {

}
return 0;


1. 라이브러리 호출

#include <stdio.h>


2. main 함수

int main() {

}

int는 return을 0이라는 정수형으로 해주기 때문, 이해 안되면 일단 이해 안해도 된다.

3. 함수 끝

return 0;

함수 실행을 끝냈다는 뜻이다!

파이썬과 다른사항

  • {} 안에 실행하고자 하는 코드를 입력한다
  • 한줄이 끝나면 ';'를 입력한다

<변수, 상수, 메모리>
변수(variables) : 데이터를 담는 박스라고 생각하면 된다.
상수 : 정해진 수, 안 바뀐다.
메모리(ram) : 변수와 상수가 들어갈 수 있는 위치. (1bit *8 = 1byte = 32bit)
(c언어는 자료형을 통해 변수에 메모리를 먼저 할당하기 때문에 자료형을 변수 앞에 적어줘야 한다는 것만 알고 있으면 된다.)

cf) 자료형 : 아래 설명 참고

자료형 간단히 이해하기 GO


자료형이 int인 변수 x 선언

int x;

자료형이 int 인 x를 선언하면, 컴퓨터는 int 자료형을 가진 변수x에게 특정 위치에서부터 4byte의 메모리를 할당한다.

#include <stdio.h>

int main() {
	int x;
	x = 5;
	printf("%d", x);
	printf("변수 x의 메모리크기는 %d 입니다", sizeof(x));
	return 0;
}

변수 x에 정수형 데이터 5를 담은것이다.
(나머지 내용은 자료형 설명 참고)
sizseof(x) : 메모리 크기 함수

#include <stdio.h>

int main() {
	int x;
	x = 50;
	float y = 123456789.123456789;
	double z = 123456789.123456789;
	printf("x=%d\n", x);
	printf("y=%.2f\n", y);
	printf("z=%.2f\n", z);
	return 0;
}

%d : 정수
%f : 실수
%.2f : 실수를 소숫점 둘째 자리까지 나타내라는 뜻이다

#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;
}

결과는 다음과 같다.
a=3.14
c= 123
b= 3.142

%.2f : 실수형을 소숫점 2자리까지 나타낸다.
%5d : 정수형을 5자리로 맞춘다. (숫자가 5자리가 안되면 앞자리를 비우고,
5자리를 넘어가면 그냥 표시한다)
%6.3f : 실수형을 6자리로 맞추고 소숫점 3자리까지 나타낸다.

(double : float와 같은 실수형인데 8byte를 할당한다)

#include <stdio.h>
#include <limits.h>
int main() {
	int x = INT_MAX;
	printf("int형의 최댓값 x는 %d 입니다.\n", x);
	printf("x+1은 %d입니다.\n", x + 1);
	return 0;
}

결과
int형의 최댓값 x는 2147483647 입니다.
x+1은 -2147483648입니다.


최댓값 다음 값은 최솟값이다

최소, 최댓값 라이브러리 생성

<limits.h>

정수형 최댓값

INT_MAX


사칙연산은 파이썬이랑 동일하다

#include <stdio.h>

int main() {
	int x = 10;
	int y = 20;
	printf("x+y=%d 입니다\n", x + y);
	return 0;
}

#include <stdio.h>
int main() {
	int x = 10;
	int y = 20;
	printf("x/y=%d 입니다.\n", x/y);
	return 0;
}

결과
x/y=0입니다.
나누기 '/' 는 정수부(몫)만 출력한다.

댓글