자료형(data type)
프로그래머는 자료의 유형과 크기를 파악하여 적절한 자료형을 선택할 수 있어야 합니다. C언어의 기본 자료형은 다음과 같습니다. signed는 부호가 있는 자료형, unsigned는 부호가 없는 자료형을 나타내며, short와 long은 크기를 말합니다.
정수형
자료형 | 크기(Byte) | 표현 범위 | |
정수 | short | 2 | -32,768~32,767 |
unsigned short | 2 | 0~65,535 | |
int | 4 | -2,147,483,648~2,147,483,647 | |
unsigned int | 4 | 0~4,294,967,295 | |
long | 4 | -2,147,483,648~2,147,483,647 | |
unsigned long | 4 | 0~4,294,967,295 |
문자형
문자형 데이터는 실제로 아스키(ASCII) 코드값으로 표현되므로 정수형 타입이라 할 수 있습니다. 따라서 작은 범위의 정수를 선언할 때 메모리 공간의 낭비가 발생하지 않도록 문자형(char)으로 선언하여 공간을 효율적으로 사용할 수 있습니다.
자료형 | 크기(Byte) | 표현 범위 | |
문자 (정수) |
char | 1 | -128~127 |
unsigned char | 1 | 0~255 |
문자형 자료를 정수형(%d)으로 출력하면 아스키(ASCII) 코드값을 확인할 수 있습니다.
출력화면

코드
#include <stdio.h>
int main()
{
printf("%d\n", 'A');
printf("%d\n", 'a');
return 0;
}
실수형
자료형 | 크기(Byte) | 표현 범위 | |
실수 | float | 4 | -3.4*10^38~3.4*10^38 |
double | 8 | -1.79*10^308~1.79*10^308 |
sizeof 연산자로 각 자료형의 크기를 확인할 수 있습니다.
출력화면

코드
#include <stdio.h>
int main(){
printf("%d\n", sizeof(char));
printf("%d\n", sizeof(short));
printf("%d\n", sizeof(int));
printf("%d\n", sizeof(float));
printf("%d\n", sizeof(double));
return 0;
}
자료의 형변환
자동 형 변환(묵시적 형 변환, implicit type conversion)
컴파일러는 자료의 손실을 최소화하는 방향으로 자료형을 변환합니다. 각각 다른 자료형의 산술연산이 이루어진다면 크기가 작은 자료형에서 큰 자료형으로 자동변환 됩니다. 예를 들어 3*3.14의 연산에서는 정수형 자료인 3이 실수형 자료 3.000000으로 자동변환 후 연산됩니다.
출력결과

코드
#include <stdio.h>
int main()
{
float cir;
cir=3*3.14; //연산되는 두 자료형이 다른 경우 자동으로 형변환이 이루어짐
printf("지름이 3인 원의 둘레는 %.2f입니다.", cir);
return 0;
}
강제 형 변환(명시적 형 변환, explicit type conversion)
프로그래머가 의도적으로 자료형을 지정하여 변환하는 것을 말합니다. ( )안에 변환할 자료형을 넣고 변환할 변수 앞에 붙입니다. 아래의 코드에서 sum(정수형) 과 2(정수형)는 같은 자료형이므로 자동 형변환이 이루어지지 않고 정수형의 결과인 5가 출력될 것입니다. 따라서 sum 앞에 (float)를 붙여 강제로 형 변환을 시킨 뒤 연산을 한다면 정확한 결과를 얻을 수 있습니다.
출력결과

코드
#include <stdio.h>
int main()
{
int num1, num2, sum;
float avg;
num1=3;
num2=8;
sum=num1+num2;
avg=(float)sum/2; //연산되는 두 자료형이 같은 경우 강제로 변환이 필요함
printf("합:%d, 평균:%.1f", sum, avg);
return 0;
}
접미사와 자료형
리터럴 상수의 값 뒤에 접미사를 붙여 사용하며, 컴파일러에게 그 값이 어떠한 자료형인지 알려 줍니다. 대소문자는 따로 구분하지 않지만 대문자를 주로 많이 사용합니다.
- int, double : 생략
- usigned int : U, u
- long : L, l
- unsigned long : UL, ul
- float : F, f
자료형 예제
(단계1) 정수형, 실수형, 문자형 변수를 선언하고, 각각의 변수에 35, 3.14, 'a'의 값을 초기화 한 뒤, 값을 출력하는 프로그램을 작성하시오.
출력결과
코드
#include <stdio.h>
int main()
{
int i=35;
float f=3.14F; //상수 값 뒤에 F를 붙여 컴파일러에게 자료형을 알려줌
char c='a';
printf("%d\n", i);
printf("%f\n", f);
printf("%c\n", c);
return 0;
}
(단계2) 국어 98점, 영어 81점, 수학 100점인 학생의 각 과목의 점수, 총점과 평균을 출력하는 프로그램을 작성하시오.
출력결과
코드
#include <stdio.h>
int main()
{
int kor, eng, math, sum;
float avg;
kor=98;
eng=81;
math=100;
sum=kor+eng+math;
avg=(float)sum/3;
printf("국어:%d점\n", kor);
printf("영어:%d점\n", eng);
printf("수학:%d점\n", math);
printf("총점:%d점, 평균:%.2f점\n", sum, avg);
return 0;
}
'C 언어 프로그래밍 > 자료형과 변수' 카테고리의 다른 글
상수와 변수 (0) | 2020.06.15 |
---|
댓글