본문 바로가기

포너블 멘토링/1주차

입출력과 변수 (2)

04 - 변수란?

 

주기억 장치(RAM) 

변수 : RAM에다 공간을 잡아서 정보를 저장함.

#include<stdio.h>

int main() {
	int a;
	
	a = 3;
	printf("%d\n", a);

	a = 5;
	printf("%d\n", a);
}

int a : 정수 자료형. 32bit(4byte)만큼의 크기를 RAM에 할당함.

변수의 이름은 a. 이러한 과정을 변수를 선언한다고 함.

 

a = 3 : a에 3을 대입.

a = 5 : a에 5를 대입. 이전의 3이란 값은 지워지는 것임.

 

(메인함수는 프로그램에 단 하나만 있어야함.)

#include<stdio.h>

int main() {
	int a = 2;
	int b = 3;

	printf("%d + %d = %d\n", a, b, a + b);
}

int a = 2 : 정수형의 변수 a를 선언함과 동시에 2로 값을 초기화.

 

변수의 이름 : 알파벳 대소문자, _, 숫자(첫번째에는 오면 안됨.)

(_는 맨앞에 쓰는 것 권장 안함.)

 

#include<stdio.h>

int main() {
	int a = 2;
	int b = 3;
	int hap = a + b;

	printf("%d + %d %d\n", a, b, hap);
}

이전 코드와 비슷한 코드지만, hap이란 변수 자체를 나중에 유용하게 사용할 수 있음.

 

 

05 - 자료형 1

변수의 연산과 변수의 자료형.

#include<stdio.h>

int main() {
	int a = 5;
	int b = 3;

	int hap = a + b;
	int cha = a - b;
	int gop = a * b;
	int mok = a / b;
	int namuji = a % b;

	printf("%d + %d = %d\n", a, b, hap);
	printf("%d - %d = %d\n", a, b, cha);
	printf("%d * %d = %d\n", a, b, gop);
	printf("%d / %d = %d\n", a, b, mok);
	printf("%d %% %d = %d\n", a, b, namuji);
}

% : 나머지 연산 기호.

printf 내에서 %를 출력하려면 앞에 %를 붙여야함. (%는 약간 특별한 놈)

 

정수 사이의 나누기 연산에서 나머지는 버리고 몫만 나타냄.

프로그래밍에서 나머지는 꽤나 중요하게 작용함.

 

/* */ : * 사이의 모든 내용을 주석 처리함.

 

Ctrl H : 같은 단어를 한번에 바꿔줄 수 있음.

#include<stdio.h>

int main() {
	float a = 9.8;
	float b = 3.14;

	float hap = a + b;
	float cha = a - b;
	float gop = a * b;
	float mok = a / b;

	printf("%f + %f = %f\n", a, b, hap);
	printf("%f - %f = %f\n", a, b, cha);
	printf("%f * %f = %f\n", a, b, gop);
	printf("%f / %f = %f\n", a, b, mok);
}

float : 실수 자료형. 32bit(4byte)

세 부분으로 나뉨. 부호, 자연수와 10의 n제곱으로 나타내었을 때의 n값, 그때의 자연수 값.

용량이 작아 오차 발생이 있음.

때문에 용량이 더 큰 double 자료형을 쓰기도 함.

double은 용량이 64bit(8byte).

 

float : 부동소수점(floating point)

 

 

05 - 자료형 2

2진법, 자료형 총정리.

 

10진법 : 각 자릿수는 10의 n제곱 값을 가짐.

 

2진법 : 각 자릿수는 2의 n제곱 값을 가짐. 0과 1로만 구성.

100110(2) = 1*2^5 + 1*2^2 + 1*2^1 = 38

 

int는 32bit였음. (4byte)

00000000 00000000 00000000 00000000

5 = 101(2)

37 = 100101(2)

 

바이트 : 컴퓨터에서 데이터를 처리하는 가장 작은 단위.

 

자료형 : 정수형, 실수형 등등...

 

정수형

- char : 1byte. 문자를 담는 데 쓰임.

- short : 2byte.

- long : 4byte. -2147483648 ~ 2147483647

- long long : 8byte.

- int : 원래는 시스템에 따라서 자동결정. 요즘은 대체로 long.

 

실수형

- float : 4byte.

- double : 8byte.

 

unsigned, signed

(맨 앞 bit가 1이면 음수.)

unsigned int a; 음수를 저장하지 않음. 그만큼 더 많은 양수를 표현 가능.

 

void : 리턴값이 없는 함수의 자료형.

bool : 참, 거짓을 저장. 8bit.

 

 

06 - sizeof 연산자와 형변환

 

#include<stdio.h>

int main() {
	printf("%d %d %d %d\n", sizeof(int), sizeof(char), sizeof(float), sizeof(double));
	
	int a;
	char b;
	float c;
	double d;

	printf("%d %d %d %d\n", sizeof(a), sizeof(b), sizeof(c), sizeof(d));
}

sizeof(x) : x의 크기를 알려줌.

x에는 형, 변수 이름 등이 들어갈 수 있음.

 

#include<stdio.h>

int main() {
	int a = 3.14;
	double b = 10;

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

실수를 정수형 변수에 담으면 소수점이 잘림. 자료의 손실. 오류는 안뜸.

int a {0}; 처럼 변수를 선언하면 에러 발생.

정수를 실수형 변수에 넣는건 상관없음.

 

#include<stdio.h>

int main() {
	int math = 90, korean = 95, english = 96;
	int sum = math + korean + english;
	double avg = sum / 3;

	printf("%f\n", avg);
}

결과 값이 실수가 아니라, 93.000000이란 정수값이 나옴.

이유는 sum / 3을 한 값을 avg에 대입하기 때문에, 정수 사이의 연산 결과가 대입되는 것이다.

즉, 나머지가 잘린 채로 대입되는 것.

 

해결하는 방법.

우선, sum을 실수 자료형으로 바꾸면 실수 / 정수 의 결과가 나옴.

다음으로 double avg = (double)sum / 3; 이라 씀.

계산 순간에만 sum을 double로써 취급해 계산.

(static_cast?)

 

서로 다른 자료형의 변수 사이의 계산 시에 더 넓은 범위의 자료형을 따라감.

(영어로 뭐라 하는데 까먹음)

'포너블 멘토링 > 1주차' 카테고리의 다른 글

연산자와 제어문 (2)  (0) 2020.03.26
연산자와 제어문 (1)  (0) 2020.03.26
입출력과 변수 (3)  (0) 2020.03.26
입출력과 변수 (1)  (0) 2020.03.26
00 - Visual Studio 설치 방법  (0) 2020.03.25