C 언어
Cpp 언어
Kotlin
Android App
알고리즘
Git/CI/CD
C 자료형 크기 및 대소판정 규정
C 자료형 크기
구분 자료형 크기 범위
기본형 void
문자형 char 1 byte 0 ~ 127
(signed) char -128 ~ 127
unsigned char 0 ~ 255
wchar_t 2 byte 0 ~ 65,535
정수형 bool 1 byte 0 ~ 1
(signed) short (int) 2 byte -32,768 ~ 32,767
unsigned short (int) 0 ~ 65,535
(signed) int 16bit : 2 byte
32/64bit : 4 byte
-2,147,483,648 ~ 2,147,483,647
unsigned int 0 ~ 4,294,967,295
(signed) long (int) ~32bit : 4 byte
64bit : 8 byte
-2,147,483,648 ~ 2,147,483,647
unsigned long (int) 0 ~ 4,294,967,295
실수형 float 4 byte 3.4E-38(-3.4*10^38) ~ 3.4E+38(3.4*10^38) (7digits)
(long) double 8 byte 1.79E-308(-1.79*10^308) ~ 1.79E+308(1.79*10^308) (15digits)

* 단순 char은 1byte이기는 하지만 컴파일러에 따라서 signed일 수도 있고 unsigned일 수도 있다.
   (PC쪽 컴파일러는 대부분 signed로 컴파일하고, 임베디드쪽 컴파일러는 대부분 unsigned로 한다)


대소판정 규정
1. 정수 승격 : int보다 작은 정수 타입은 무조건 signed int로 승격된다.
  => (signed, unsigned) char, short => signed int로 변환

2. 실수 우선 : 실수 타입이 정수 타입보다 크고 같은 타입끼리는 크기로 판단
  => int < long int < long long int < float < double < long double

3. unsigned int 우선 : signed과 unsigned int 비교 시 unsigned int를 더 크게 보고 형변환하여 비교한다.
  * 이것은 오로지 signed int와 unsigned int에만 적용되는 규칙이다. 왜냐하면 ALU 연산은 int형으로 하기 때문에 그대로 넣어서 비교하기 때문이다.