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 |