✔️ c 언어에서 지원하는 자료형의 크기를 확인해보자!
#include <stdio.h>
void main(){
printf("char = %d\n", sizeof(char));
printf("short = %d\n", sizeof(short));
printf("int = %d\n", sizeof(int));
printf("long = %d\n", sizeof(long));
printf("float = %d\n", sizeof(float));
printf("double = %d\n", sizeof(double));
printf("long double = %d\n", sizeof(long double));
printf("int* = %d\n", sizeof(int*));
printf("double* = %d\n", sizeof(double*));
}
//cmd+shift+b => 단축키
에휴 너무 오랜만에 c를 했더니 셋팅부터 처음부터 다하느라 고생좀 했다 ,,,
👉 결과를 보면 문자형은 1바이트, 정수와 실수는 4바이트, double과 long은 8바이트
✔️팩토리얼 코딩을 통해 좀 더 자세히 살펴보자!
//팩토리얼 계산
#include <stdio.h>
void factorial (int n);
void main()
{
factorial(20);
}
void factorial (int n){
int i, j;
int total;
for (i=2; i<=n; i++){
total=1;
for (j=2; j<=i; j++){
total = total * j;
}
printf("%d! = %d\n", i, total);
}
}
2! = 2
3! = 6
4! = 24
5! = 120
6! = 720
7! = 5040
8! = 40320
9! = 362880
10! = 3628800
11! = 39916800
12! = 479001600
13! = 1932053504
14! = 1278945280
15! = 2004310016
16! = 2004189184
17! = -288522240
18! = -898433024
19! = 109641728
20! = -2102132736
❓코드를 짜고 결과를 확인해보면 13!부터는 결과값이 좀 이상하다 ❓
total이 int 형이라 최대 4바이트까지 가능
4바이트 = 32비트 = 2,147,483,647 ==> 값의 범위 : -2147483648 ~ 2147483647
1바이트 = 8비트 = 2^8 = 256 ==> 값의 범위 : -128 ~ 127
13 이후부터는 팩토리얼 값이 Overflow 된 것이다. 이럴 땐 다른 자료형 사용해줘라!
✔️추상자료형 (Abstract data type , ADT) 이 뭘까
모든 자료가 char, int, float의 형태로 표현되는 건 아니다
학생이 교과목을 수강하거나 시험을 보거나 학점을 받는 상황에서는
학생과 교과목은 다양한 속성을 가진 객체로 표현되어야 하고
시험을 보고 학점을 받는 일은 행위로 표현되어야 한다
추상자료형 : 기본 자료형 외에 새로운 객체의 속성 (property) 과 연산자 (operation)을 정의하여 사용할 수 있도록 해주는 것
//은행 계좌를 추상 자료형으로 선언한 예
class bankaccount{
//아래 네가지는 계좌객체의 속성 (property)
int account_id;
int account_type;
char owner_name[20];
float balance = 0;
deposit(amount)//입금 : 이 객체의 연산자 (operation, behavior)
{
balance = balance+amount;
}
withdraw(amount)//출금 : 이 객체의 연산자
{
balance = balance-amount;
}
init(name, type, money)
//객체를 생성하는 연산자, 인자들로 객체 속성값 초기화
//이 추상 자료형을 이용하여 myaccount라는 객체가 초기값으로 생성된다
{
owner_name = name;
account_type = type;
deposit(money);
}
}
BankAccount myaccount("Lee", "checking", "100000");
'자료구조' 카테고리의 다른 글
[자료구조] 06 배열 Array (0) | 2020.09.21 |
---|---|
[자료구조] 05 💫 포인터 (0) | 2020.09.17 |
[자료구조] 04 구조체란? (0) | 2020.09.17 |
[자료구조] 02 소프트웨어 개발 (0) | 2020.09.16 |
[자료구조] 01 알고리즘과 허프만코딩트리 (0) | 2020.09.16 |