반응형
7장: 기본 데이터 타입 (Basic Types)
- 기본 타입: int, float, double, char
- 정수와 부동소수점: 범위와 크기
- typedef: 새로운 데이터 타입 정의
- 데이터 타입 변환: 암시적, 명시적
7.1 C 언어의 데이터 타입
C 언어는 변수에 저장되는 데이터의 종류를 지정하기 위해 여러 데이터 타입을 제공합니다.
기본 데이터 타입
데이터 타입 크기 (byte) 설명 예시
int | 4 (대부분 시스템) | 정수형 | 42, -10 |
float | 4 | 단정밀도 부동소수점 | 3.14, -0.5 |
double | 8 | 배정밀도 부동소수점 | 3.14159 |
char | 1 | 문자형 (ASCII 값) | 'A', 'a' |
자료형 크기 확인
sizeof 연산자를 사용해 데이터 타입의 크기를 확인할 수 있습니다:
#include <stdio.h>
int main(void) {
printf("int 크기: %zu 바이트\n", sizeof(int));
printf("float 크기: %zu 바이트\n", sizeof(float));
printf("double 크기: %zu 바이트\n", sizeof(double));
printf("char 크기: %zu 바이트\n", sizeof(char));
return 0;
}
7.2 정수형 데이터 타입
종류 및 크기
데이터 타입 크기 (byte) 값의 범위
short int | 2 | -32,768 ~ 32,767 |
int | 4 | -2,147,483,648 ~ 2,147,483,647 |
long int | 8 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
unsigned int | 4 | 0 ~ 4,294,967,295 |
부호 있는 정수와 없는 정수
- 부호 있는 정수 (signed): 음수와 양수를 저장 가능. (기본값)
- 부호 없는 정수 (unsigned): 양수와 0만 저장 가능.
예제: 부호 있는 정수와 없는 정수
#include <stdio.h>
int main(void) {
int signed_num = -10;
unsigned int unsigned_num = 10;
printf("signed int: %d\n", signed_num);
printf("unsigned int: %u\n", unsigned_num);
return 0;
}
7.3 부동소수점 데이터 타입
종류 및 정밀도
데이터 타입 크기 (byte) 유효 숫자 자리수 범위
float | 4 | 약 6~7자리 | ±3.4E-38 ~ ±3.4E+38 |
double | 8 | 약 15~16자리 | ±1.7E-308 ~ ±1.7E+308 |
long double | 16 | 약 19~20자리 | ±3.4E-4932 ~ ±1.1E+4932 |
소수점 출력
printf에서 부동소수점을 출력할 때 %f와 %e를 사용합니다:
#include <stdio.h>
int main(void) {
float num = 3.14159;
printf("소수점 출력 (기본): %f\n", num);
printf("지수 형태로 출력: %e\n", num);
return 0;
}
출력 결과:
소수점 출력 (기본): 3.141590
지수 형태로 출력: 3.141590e+00
7.4 문자형 데이터 타입
char 데이터 타입
- 크기: 1 바이트
- 값의 범위: -128 ~ 127 (signed), 0 ~ 255 (unsigned)
ASCII 값 출력
문자는 내부적으로 **정수값(ASCII)**으로 저장됩니다:
#include <stdio.h>
int main(void) {
char ch = 'A';
printf("문자: %c\n", ch);
printf("ASCII 값: %d\n", ch);
return 0;
}
출력 결과:
문자: A
ASCII 값: 65
7.5 typedef를 사용한 데이터 타입 정의
typedef는 새로운 데이터 타입 이름을 정의하는 데 사용됩니다.
기본 사용법
typedef 기존_데이터_타입 새_이름;
예제
#include <stdio.h>
typedef unsigned int uint;
int main(void) {
uint num = 100; // unsigned int와 동일
printf("값: %u\n", num);
return 0;
}
7.6 데이터 타입 변환 (Type Casting)
데이터 타입 변환은 한 데이터 타입을 다른 데이터 타입으로 변환하는 과정입니다.
암시적 변환
컴파일러가 자동으로 수행.
int a = 10;
float b = a; // int → float
명시적 변환
프로그래머가 직접 변환.
float a = 10.5;
int b = (int)a; // float → int
예제
#include <stdio.h>
int main(void) {
int a = 5, b = 2;
float result;
result = (float)a / b; // 명시적 변환
printf("결과: %.2f\n", result);
return 0;
}
출력 결과:
결과: 2.50
7.7 데이터 타입 크기 확인 프로그램
예제
#include <stdio.h>
int main(void) {
printf("char: %zu 바이트\n", sizeof(char));
printf("int: %zu 바이트\n", sizeof(int));
printf("float: %zu 바이트\n", sizeof(float));
printf("double: %zu 바이트\n", sizeof(double));
printf("long double: %zu 바이트\n", sizeof(long double));
return 0;
}
출력 결과 (시스템에 따라 다름):
char: 1 바이트
int: 4 바이트
float: 4 바이트
double: 8 바이트
long double: 16 바이트
반응형
'Computer Science > C 언어' 카테고리의 다른 글
[C #9] 함수 (Functions) (3) | 2024.12.07 |
---|---|
[C #8] 배열 (Arrays) (1) | 2024.12.06 |
[C #6] 반복문 (Loops) (0) | 2024.12.04 |
[C#5] 조건문 (Selection Statements) (1) | 2024.12.03 |
[C#4] 표현식 (Expressions) (0) | 2024.12.02 |