코딩도장, 패스트캠퍼스 컴퓨터공학 수업 내용을 정리합니다.
잘못된 부분은 댓글 부탁드립니다.

오늘 한 일

  1. C언어 코딩도장 Unit 8 완료
  2. velog 마크다운 배우기
  3. 케틀벨, 팔굽혀펴기 운동
  4. 나프잘 독서

C 언어

실수 자료형 : float, double, long double

실수 자료형 크기 범위.png

지수 표기법

아주 큰 숫자나 아주 작은 숫자를 표기할 때는 지수 표기법(exponential notation)을 사용한다.
실수e+지수 : 실수 * 10의 거듭제곱
2.1e+3 >> 2.1 * 1000 = 2100으로 나타낸다.

실수e-지수 : 실수 * (1 / 10의 거듭제곱) 2.1e-2 >> 2.1 * (1/100) = 0.021로 나타낸다.

부동소수점

float num1 = 0.1f; //단정밀도 부동소수점 변수
double num2 = 3867.215820; //배정밀도 부동소수점 변수
long double num3 = 9.3275131l; //배정밀도 부동소수점 변수

printf("%f %f %Lf\n", num1, num2, num3);

float은 숫자 뒤에f를 붙인다.
double은 붙이지 않는다.
long double은 숫자 뒤에 l을 붙인다.
출력 시 float, double은 %f long double은 %Lf를 붙인다.

지수 표기법

float num1 = 3.e5f;
double num2 = -1.3827e-2;
long double num3 = 5.21e+9l;

printf("%e %e %Le\n", num1, num2, num3);

지수표기법으로 출력 시 float, double은 %e long double은 %Le로 출력한다.

tip
지수 표기법 표기 시 정수 부분은 한 자릿수만 적고, 소수자릿수 뒤에 e와 지수를 표기.
e 뒤에 지수가 양수이면 소수점 기준으로 자릿수가 왼쪽으로 이동하며 음수이면 오른쪽으로 이동한다. 지수가 양수일 때는 +를 생략가능

실수 자료형의 양수 최솟값, 최댓값

float num1 = FLT_MIN;           // float의 양수 최솟값
float num2 = FLT_MAX;           // float의 양수 최댓값
double num3 = DBL_MIN;          // dobule의 양수 최솟값
double num4 = DBL_MAX;          // double의 양수 최댓값
long double num5 = LDBL_MIN;    // long double의 양수 최솟값
long double num6 = LDBL_MAX;    // long double의 양수 최댓값

printf("%.40f %.2f\n", num1, num2); 
printf("%e %e\n", num3, num4);
printf("%Le %Le\n", num5, num6);

형식지정자를 %.40f, %.2f처럼 소수점 뒤에 숫자를 지정하면 해당 숫자 만큼 소수점 이하 자릿수를 출력한다.
%.40f는 소수점 이하 자릿수를 40개 출력하라는 의미다.

실수 자료형도 오버플로우와 언더플로우가 발생한다.

실수 오버플로우.png

0을 기준잡아 양수 음수로 나뉜다.
실수 자료형 양수, 음수가 언더플로우 발생 시 0 또는 쓰레기 값으로 처리된다. 오버플로우 발생 시 양수는 무한대인 +INF, 음수는 -INF로 처리된다.

tip
long double
운영체제, 플랫폼마다 크기가 다름

long double.png


느낀점

C 언어는 깐깐한 언어? 여서 Python보다 너무 어렵다.
코딩도장,유데미는 한 챕터씩 패스트캠퍼스는 하루 강의 3개씩 들어야겠다.
포렌식은 이론과 실습을 4~5시간 공부해야지. CTF 한 개 푸는데 3시간은 걸리니..
나프잘을 1시간씩 읽자 !
TIL을 작성하니 복습이 잘 되지만 정리하는데 너무 오래걸린다


출처 : 코딩도장, 패스트캠퍼스 컴퓨터공학 수업