제 6강) 자료형2 |
지난 시간에 이어서 자료형에 대한 것들을 이어서 보도록 합시다.
Unsigned |
"unsigned"는 일반적으로 "서명되지 않은"이라는 뜻을 갖고 있다는 것은 아실겁니다.
하지만 C언어에서 "unsigned"가 들어간 정수 자료형은 "0과 기존의 표현 가능한 양의 정수 x 2"라는 뜻이 됩니다.
(즉, 음의 정수를 표현하지 않은 만큼 양의 정수를 더 많이 표현할 수 있습니다.)
정수자료형 | 크기 | 값의 범위 |
char | 1바이트 | -128 ~ 127 |
unsigned char | 1바이트 | 0 ~ 127 + 128 |
short | 2바이트 | -32,768 ~ 32,767 |
unsigned short | 2바이트 | 0 ~ 32,767 + 32,768 |
int | 4바이트 | -2,147,483,648 ~ 2,147,483,647 |
unsigned int | 4바이트 | 0 ~ 2,147,483,647 + 2,147,483,648 |
long | 4바이트 | -2,147,483,648 ~ 2,147,483,647 |
unsigned long | 4바이트 | 0 ~ 2,147,483,647 + 2,147,483,648 |
long long | 8바이트 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
unsigned long long | 8바이트 | 0 ~ 9,223,372,036,854,775,807 + 9,223,372,036,854,775,808 |
(표 출처 : MSDN)
그래서 표현 범위는 위와 같이 됩니다.
그럼 직접 눈으로 확인하여 봅시다.
#include <stdio.h>
#include <limits.h>
// limits.h에는 C언어에서 기본으로 제공하는 자료형의 최소, 최대크기를 가지고 있습니다.
// CHAR_MIN, CHAR_MAX, UCHAR_MAX 등...
int main(void)
{
printf("char : %d ~ %d \n", CHAR_MIN, CHAR_MAX);
printf("unsigned char : %d ~ %d \n", 0, UCHAR_MAX);
printf("short : %d ~ %d \n", SHRT_MIN, SHRT_MAX);
printf("unsigned short : %d ~ %d \n", 0, USHRT_MAX);
printf("int : %d ~ %d \n", INT_MIN, INT_MAX);
printf("unsigned int : %d ~ %u \n", 0, UINT_MAX);
// %u는 "unsigned int"를 출력
printf("long : %ld ~ %ld \n", LONG_MIN, LONG_MAX);
// %ld는 "long"을 출력
printf("unsigned long : %d ~ %lu \n", 0, ULONG_MAX);
// %lu는 "unsigned long"을 출력
printf("long long : %lld ~ %lld \n", LLONG_MIN, LLONG_MAX);
// %lld는 "long long"을 출력
printf("unsigned long long : %d ~ %llu \n", 0, ULLONG_MAX);
// %llu는 "unsigned long long"을
return 0;
}
위의 소스를 입력하여봅시다.
이쯤에서 알아보는 printf문의 서식문자 |
지금까지의 예제들을 보면 "자료형에 따라서 서식문자가 다르다"라는 것을 알 수 있습니다.
그럼 printf문에서 출력할 때 쓰이는 서식문자들에는 어떤 것들이 있을 까요?
서식문자 | 출력대상 | 출력형태 |
%d | char, short, int | 부호가 있는10진수 정수 |
%ld(엘디) | long | 부호가 있는10진수 정수 |
%lld(엘엘디) | long long | 부호가 있는10진수 정수 |
%o(소문자 오) | unsigned int | 부호가 없는 8진수 정수 |
%u | unsigned int | 부호가 없는 10진수 정수 |
%x, %X | unsigned int | 부호가 없는 16진수 정수 |
%f | float, double | 10진수 방식의 부동소수점 실수 |
%Lf(엘에프) | long double | 10진수 방식의 부동소수점 실수 |
%e, %E | float, double | e방식의 부동소수점 실수(대문자 E로 하면 대문자로 나옴) |
%g, %G | float, double | 값에 따라 %f와 %e를 선택함(소수점 이하 필요없는 0을 없앰) |
%c | char, short, int | 값에 대응하는 문자 하나 |
%s | char * | 문자열 |
%p | void * | 포인터의 주소값 |
참고로 이 서식문자들은 전부 외워야하는 기본중의 기본입니다.
제가 이걸 보여드린 이유는 간단합니다.
바로 다음 시간에는 "printf문과 scanf문"에 대해서 알아볼건데요.
printf문의 경우에는 지금까지 여러차례에 걸쳐서 써서 대충아시겠지만 "출력문"이구요.
scanf문은 C언어에서 대표적으로 사용하고 있는 "입력문"입니다.
scanf문의 경우에도 printf문과 서식문자가 겹치는게 매우 많습니다.
그래서 위의 표를 미리 외워두시면 아주 쉽게 따라오실 수 있습니다.
(그리고 서식문자에 대해서 설명하지 않을것이기 때문에....)
다음 강의가 나오기 전까지 외워두시라는 거죠.
다음시간에는 |
드디어 "출력문과 입력문"에 대해서 알려드릴것입니다.
이것까지 배우시면 C언어의 15%는 배운것이라고 할 수 있습니다.
(참고로 포인터라는 놈이 50% 입니다.)
'Study > C언어' 카테고리의 다른 글
처음하시는 분들을 위한 C언어 기초강의 시즌2 - 08 [변수에 대한 추가적인 이야기] (0) | 2018.10.17 |
---|---|
처음하시는 분들을 위한 C언어 기초강의 시즌2 - 07 [입력문과 출력문(printf, scanf, scanf_s)] (0) | 2018.10.17 |
처음하시는 분들을 위한 C언어 기초강의 시즌2 - 05 [자료형1] (0) | 2018.07.08 |
처음하시는 분들을 위한 C언어 기초강의 시즌2 - 04 [변수] (0) | 2018.07.08 |
처음하시는 분들을 위한 C언어 기초강의 시즌2 - 03 [C언어와의 첫만남] (0) | 2018.07.08 |