Friday, June 01, 2007
C언어] size_t 형의 의미; unsigned int와 차이점, 차이
size_t 는 unsigned int 이며, 문자열이나 메모리의 사이즈를 나타낼 때 사용합니다. "unsigned int"를
typedef unsigned int size_t;
이렇게 size_t 라는 이름으로 정의해 놓은 것입니다.
size_t 는, 32비트 운영체제에서는 "부호없는 32비트 정수"이고, 64비트 운영체제에서는 "부호없는 64비트 정수"입니다.
그러나 "unsigned int" 또는 "int"는, 64비트 OS라고 해서 꼭 64비트 정수는 아닙니다. 여전히 32비트일 수도 있습니다. 이것이 size_t형과 "unsigned int"형의 차이입니다.
메모리나 문자열 등의 길이를 구할 때에는 "unsigned int" 대신 size_t 라는 형으로 길이가 반환됩니다.
소스 파일명: example.cpp
size_t 가 아닌 그냥 unsigned int 형에 캐스팅 없이, 문자열 길이를 대입하면
warning C4267: 'initializing' : conversion from 'size_t' to 'unsigned int', possible loss of data
이런 경고가 나오게 됩니다.
typedef unsigned int size_t;
이렇게 size_t 라는 이름으로 정의해 놓은 것입니다.
size_t 는, 32비트 운영체제에서는 "부호없는 32비트 정수"이고, 64비트 운영체제에서는 "부호없는 64비트 정수"입니다.
그러나 "unsigned int" 또는 "int"는, 64비트 OS라고 해서 꼭 64비트 정수는 아닙니다. 여전히 32비트일 수도 있습니다. 이것이 size_t형과 "unsigned int"형의 차이입니다.
메모리나 문자열 등의 길이를 구할 때에는 "unsigned int" 대신 size_t 라는 형으로 길이가 반환됩니다.
size_t 를 unsigned int 로 변환 예제
소스 파일명: example.cpp
#include <stdio.h>
#include <string.h>
int main(void) {
// size_t 자료형 자체의 크기 알아보기
printf("%u\n", sizeof(size_t));
// 출력 결과: 4
// (32비트 환경에서는 size_t형이 4바이트 즉 32비트,
// 64비트 환경이라면 8이 출력될 것임)
// 문자열 길이 구하기
size_t size = strlen("AAA BBB");
// 다음과 같이 (unsigned int) 로 캐스팅하면
// size_t가 unsigned int로 변환됨
// unsigned int size = (unsigned int) strlen("AAA BBB");
printf("%u\n", size);
// 출력 결과: 7
return 0;
}
#include <string.h>
int main(void) {
// size_t 자료형 자체의 크기 알아보기
printf("%u\n", sizeof(size_t));
// 출력 결과: 4
// (32비트 환경에서는 size_t형이 4바이트 즉 32비트,
// 64비트 환경이라면 8이 출력될 것임)
// 문자열 길이 구하기
size_t size = strlen("AAA BBB");
// 다음과 같이 (unsigned int) 로 캐스팅하면
// size_t가 unsigned int로 변환됨
// unsigned int size = (unsigned int) strlen("AAA BBB");
printf("%u\n", size);
// 출력 결과: 7
return 0;
}
size_t 가 아닌 그냥 unsigned int 형에 캐스팅 없이, 문자열 길이를 대입하면
warning C4267: 'initializing' : conversion from 'size_t' to 'unsigned int', possible loss of data
이런 경고가 나오게 됩니다.
tag: cpp
C언어 | C/C++ (Visual C++) 프로그래밍
MSDN을 보시면. 이렇게 나와있습니다. 참고해보세요.
size_t 데이터형은
_fsize_t (unsigned long integer)
Used to represent the size of a file.
IO.H,
WCHAR.H
https://msdn.microsoft.com/en-us/library/323b6b3k.aspx
MSDN을 보시면. 이렇게 나와있습니다. 참고해보세요.
size_t (unsigned __int64 or unsigned integer, depending on the target platform)
Result of sizeof operator.
CRTDEFS.H and other include files
https://msdn.microsoft.com/en-us/library/323b6b3k.aspx
공부하는 학생입니다. 좋은 내용 너무너무 감사합니다.
<< Home