Skip to content

Latest commit

 

History

History
51 lines (42 loc) · 3.12 KB

Datatype.md

File metadata and controls

51 lines (42 loc) · 3.12 KB

Datatype

데이터 타입 크기(바이트) 최소값 최대값 Input format directive Output format directive Suffix
char 1 0 127 %c %c 없음. 단, 입력시 single quotation( ' ' )으로 감싸준다.
signed char 1 -128(-0x80) 127(0x7F) ? ? X
unsigned char 1 0 255 ? ? X
signed short 2 -32,768(-0x8000) 32,767(0x7FFF) %hd %d X
unsigned short 2 0 65,535 %d %hd X
signed int 4 -2,147,483,648 (10자리)(-0x80000000) 2,147,483,647 (10자리)(0x7FFFFFFF) %d %d X
unsigned int 4 0 4,294,967,295 (10자리) %d %u X
signed long 4 -2,147,483,648 (10자리) 2,147,483,647 (10자리) %ld %ld l
unsigned long 4 0 4,294,967,295 (10자리) %ld(?) %l ul
signed long long 8 -9,233,372,036,854,775,808 (19자리)(-0x8000000000000000) 9,233,372,036,854,775,807(19자리)(0x7FFFFFFFFFFFFFFF
) %lld(?) %ll ll
unsigned long long 8 0 18,446,744,073,709,551,615(20자리) %lld(?) %llu ull
float 4 ? ? %f %f f
double 8 ? ? %lf %f X
long double 8 ? ? %Lf %Lf L
  • 궁금증. long과 int는 둘다 수의 표현 범위가 동일한데, 궂이 다른 데이터 타입을 쓰는 것일까? 그 이유는 다음과 같다.

  • c언어로 int와 long 타입의 변수를 선언한 후, 컴파일 과정을 거치면서 결과가 달라지기 때문이다.

  • int같은 경우, CPU가 가장 효율적으로 다룰 수 있는 정수형으로 정의된다. 그렇기 때문에, 만약 과거 컴퓨터와 같이 8비트, 16비트 같은 운영체제에서는 int형 변수는 각기 1바이트, 2바이트를 차지한다. 하지만, long의 경우, 플랫폼과 상관없이 동일하게 4바이트를 차지한다. 즉, int와 long의 바이트가 같아지게 된 것은 컴퓨팅 환경이 발전하면서 같아지게 된 것이다. 이제 64비트 CPU가 나오는 시대인 만큼, 기본 int형은 8바이트를 차지하게 된 상황이다.

  • c에서 변수 선언시 주의할점!

  • 다음과 같은 코드는 서로 다른 진법으로 수를 표현한 것이다.

  int a = 17; // 10진법, 10진법으로 수를 표현할 시 17
  int b = 017; // 8진법, 10진법으로 수를 표현할 시 15
  int b = 0x17; // 16진법, 10진법으로 수를 표현할 시 23

접미사(suffix) 규칙

  • 문자, short, int 타입은 suffix가 없다.
  • 데이터 타입의 순서와 일치시켜 적는다.
    • 예를 들어 unsigned long long 일 경우 ==> 3ull; 이라고 적는다.
  • float의 경우는 f를 붙인다.
  • 실수 형태는 기본적으로 double형으로 형변환 되어 입력된다.

Input format directive 규칙

Output format directive 규칙