728x90
우선 기본 자료형 크기부터 정리합니다.
자료형 |
byte |
계산 |
범위 |
비고 |
char |
1byte |
8bit = 2^8 = 256 |
-128~127 |
|
bool |
1byte |
|
0~1 |
|
int |
4byte |
32bit = 2^32 = 4E9 |
-2,147,483,648~2,147,483,647 2,147,483,647 = 0x7fffffff |
|
long |
4byte |
32bit = 2^32 = 4E9 |
-2,147,483,648~2,147,483,647 |
64bit에서 8byte |
long long |
8byte |
64bit = 2^64 = 1E19 |
-9,223,372,036,854,775,808~9,223,372,036,854,775,807 |
|
__int64 |
8byte |
64bit = 2^64 = 1E19 |
-9,223,372,036,854,775,808~9,223,372,036,854,775,807 |
|
float |
4byte |
|
3.4E-38(-3.4*10^38) ~ 3.4E+38(3.4*10^38) (7digits) |
|
double |
8byte |
|
1.79E-308(-1.79*10^308) ~ 1.79E+308(1.79*10^308) (15digits) |
|
sizeof 함수는 변수나 자료형의 크기를 반환합니다.
직접 코드를 보며 확인하시면 이해하시기 빠를 것 같습니다.
#include <stdio.h>
#include <stdlib.h>
void about_sizeof_function(){
long long b[5];
printf("%ld\n", sizeof b); // 5elements x 8bytes = 40
printf("total size(%ld), \
array size(%ld), \
array size(%ld), \
each element size(%ld)\n",
sizeof(b), // 40
sizeof(b) / sizeof(long long), // 40 / 8 = 5
sizeof(b) / sizeof(b[0]), // 40 / 8 = 5
sizeof(b[0])); // 8bytes (= sizeof(long long))
int a[10][3];
printf("%ld\n", sizeof a); // (10 x 3) elements x 4bytes = 120
printf("total size(%ld), \
array size(%ld), \
row size(%ld), \
column size(%ld), \
each element size(%ld)\n",
sizeof(a), // 120
sizeof(a) / sizeof(int), // 120 / 4 = 30
sizeof(a) / sizeof(a[0]), // 120/ (3x4) = 10
sizeof(a[0]) / sizeof(int), // (3x4) / 4 = 3
sizeof(a[0][0]) ); // 4 (= sizeof(int))
}
int main() {
about_sizeof_function();
return 0;
}
728x90
'lang > C,C++' 카테고리의 다른 글
++i, i++? 무엇을 선택해야 할까 (958) | 2019.10.11 |
---|---|
[Class와 OOP] 6. OOP 다형성, 가상함수, 추상클래스, 순수가상함수 (1262) | 2019.10.09 |
[Class와 OOP] 5. OOP 상속성, (overloading vs overriding) (962) | 2019.10.09 |
[Class와 OOP] 4. OOP 캡슐화, 프렌드(freind), static, const 멤버 변수, 함수 (1013) | 2019.10.09 |
[Class] 3. Class - 연산자오버로딩 (953) | 2019.10.09 |
댓글