3.1 데이터와 자료형
자료형은 크게는 정수자료형과 실수자료형으로 나뉨. 문자(char)도 컴퓨터 내부적으로는 정수자료형으로 처리됨,
3.2 변수와 상수
변수는 어떤 값이 저장될수있는 메모리 공간.
리터럴 상수는 문자그대로의 의미를 갖고 변할수 없는것
const와 함께 선언된 변수(=기호적상수)는 값을 바꿀수 없음
기호적상수는 기호적인 의미만 갖기때문에 기호적 상수
3.3 scanf() 함수의 기본적인 사용법
비주얼 스튜디오에서는 #define _CRT_SECURE_NO_WARNINGS 을 전처리기 부분에 작성해줘야 에러가 나오지 않음. 이걸 안하고 하는법은 강의 참조
(해당에러는 MS가 보안상 추천해주는것임)
scanf에서 &는 메모리의 주소를 scanf가 알기위해 꼭 써줘야함
즉 scanf가 &i를 받았을때는 변수 i의 메모리 주소로가서 사용자가 입력한 값으로 메모리에 덮어쓰는것
3.4 간단한 입출력 프로그램 만들기
만드는 과정은 강의 참조.
원 > 달러 변환 프로그래밍 만들때 자료형은 f로 맞추어 주어야 하는점에 주의
3.5 정수와 실수
부호가 있는 정수(signed)의 경우 맨앞 비트 하나를 +-부호표현용으로 쓰기때문에 부호없는 정수(unsigned)와 범위가 다름
실수가 메모리에 담기는것은 이하의 도식과 같다.
3.6 정수의 오버플로우
size of 의 단위는 바이트(8bit 이므로 콘솔창에서 4(=4byte)라는 숫자가 뜨면 4 * 8 로 32 비트 (= 2진수 32개)라고도 말할 수 있다.
signed int 와 unsigned int의 범위는 이하에서 볼수있듯이 다르다
변수는 변수가 가질수 있는 범위내에서 사용해야한다. -> 그렇지 않을경우 오버플로우 발생
3.7 다양한 정수형들
흐린글자부분은 생략이 가능한 부분이다.
형식지정자는 printf나 scanf 에서 %뒤에 사용하는것
값의 범위를 참조하여 오버플로우가 일어나지 않게할 것
3.8 8진수와 16진수
3.9 고정 너비 정수
앞강의 에서 봤듯 C는 각 자료형의 최소 메모리 크기만을 규정짓기 때문에 다른시스템에서 자료형의 크기가 다를수가 있음.
따라서 고정너비정수를 사용해 다른 기기에서의 이식성을 높일 수 있다.
고정 너비 정수 사용시 printf나 scanf의 형식 지정자를 무엇으로 할지 헷갈릴수있는데 이때는 inttypes.h의 매크로를 사용하면 편하다.
3.10 문자형
문자도 컴퓨터 내부적으로는 숫자로 대응되어 작동한다.
ASCII 테이블과 대응해 사용도 가능하다.
char 변수에는 문자 하나만 들어갈수있다는 점에 주의
여러가지 용법은 그떄그때 찾아보며 알아보면됨.
3.11 부동소수점형
부동소수점수가 메모리에 나눠서 담기는 도식은 이하와 같다.
C에서 부동소수점의 표현방식은 3가지로 float, double, long double이 있다.
3.12 부동소수점형의 한계
Round-off errors
e.g. 너무 큰 수와 작은수를 연산하면 작은수가 무시될수있음 (내부구조의 한계)
e.g. 0.01을 100번 더해도 0.99999와 같은 숫자로 나옴.
-> 숫자를 이진수로 저장하기때문에 발생하는 오차가 누적되어 발생.
Overflow
최대 표현 가능한 수를 넘어선 수를 쓸경우 Inf로 나올수 있음
Underflow
최소로 표현가능한 정밀도를 넘어설 경우 숫자가 사라져 버림.
3.13 불리언형
True , False 로 존재하며 1과 0이므로 1비트로 생각할수 있으나 메모리주소를 지정받을수 있는 가장작은 자료의 크기가 1바이트이기떄문에 불리언도 1바이트크기로 존재
별도의 형식지정자가 없어서 %d 사용
'TIL > 따배씨' 카테고리의 다른 글
연산자, 표현식, 문장 (2021-01-07) (0) | 2021.01.07 |
---|---|
문자열과 형식 맞춘 입출력 (2021-01-05) (0) | 2021.01.05 |
C언어의 소개 (2021-01-03) (0) | 2021.01.03 |
C 언어의 시작 (2021-01-02) (0) | 2021.01.02 |
컴퓨터 작동원리 (2021-01-01) (0) | 2021.01.01 |
댓글