C에서 사용하는 상수의 종류는 아래와 같다.
상수는 정수형과 실수형으로 나누어지며
정수형은 signed/unsigned로 사용 가능한 반면, 실수형은 항상 signed로 사용한다.
int 상수의 크기는 CPU 의존적이기 때문에 컴파일러 마다 다르다.
보통 CPU 연산 수행을 위한 레지스터 크기로 결정하며 2Byte 또는 4Byte가 된다.
그리고 suffix를 통해 데이터 타입을 구분하게 되는데 정수의 경우 suffix가 없을 경우 무조건 signed int가 된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include <stdio.h> int main(void) { printf("char: %d\n", sizeof(char)); printf("short: %d\n", sizeof(short)); printf("int: %d\n", sizeof(int)); printf("long: %d\n", sizeof(long)); printf("long long: %d\n", sizeof(long long)); printf("float: %d\n", sizeof(float)); printf("double: %d\n", sizeof(double)); printf("long double: %d\n", sizeof(long double)); return 0; } | cs |
Visual studio에서 sizeof 함수를 사용하여 출력한 결과이다.
sizeof 함수는 자료형의 크기를 구하는 함수이며 unsigned를 붙여도 크기는 같다.
C 표준의 정수형 상수 범위는 아래와 같다.
Type |
Byte |
min |
max |
char |
1 |
0 |
127 |
signed char |
1 |
-127 |
127 |
unsigned char |
1 |
0 |
255 |
signed short |
2 |
-32,767 |
32,767 |
unsigned short |
2 |
0 |
65,535 |
signed int |
2 or 4 |
-2,147,483,647 |
2,147,483,647 |
unsigned int |
2 or 4 |
0 |
4,294,967,295 |
signed long |
4 |
-2,147,483,647 |
2,147,483,647 |
unsigned long |
4 |
0 |
4,294,967,295 |