> 백엔드 개발 > C++ > 64비트 Windows에서 'long'은 정말 64비트인가요?

64비트 Windows에서 'long'은 정말 64비트인가요?

DDD
풀어 주다: 2024-12-28 20:50:18
원래의
973명이 탐색했습니다.

Is `long` Really 64-Bits on 64-Bit Windows?

64비트 Windows에서 Long의 비트 크기: 자세히 살펴보기

64비트 Windows에서 long의 크기에 대한 질문은 약간의 혼란을 불러일으켰습니다. 문서에서는 이 환경에서 long이 실제로 64비트라고 제시하지만 현실은 더 미묘합니다.

Unix 시스템 영역에서는 64비트 플랫폼(주로 ILP64)의 정수 및 포인터 크기에 대한 다양한 배열이 있습니다. 그리고 LP64. 그러나 LLP64의 경우 Microsoft의 접근 방식이 다릅니다.

ILP64와 LP64

Type ILP64 LP64 LLP64
char 8 8 8
short 16 16 16
int 64 32 32
long 64 64 32
long long 64 64 64
pointer 64 64 64

모든 최신 64비트 Unix 시스템은 LP64를 사용합니다. 여기서 long은 64비트입니다. MacOS X 및 Linux가 이 범주에 속합니다.

LLP64 및 64비트 Windows

Microsoft의 LLP64 구성표는 수정 없이 32비트 소프트웨어를 다시 컴파일하는 데 우선 순위를 둡니다. 결과적으로 64비트 Windows 시스템에서는

  • long 및 int 크기가 32비트로 유지됩니다
  • 64비트 정수에 대한 새로운 데이터 유형이 도입되었습니다

플랫폼 중립 코드

To 플랫폼 중립적인 코드를 얻으려면 C99 의 유형을 사용하는 것이 좋습니다. 헤더는 다음을 제공합니다:

  • 부호 있는 정수의 경우 int8_t ~ int64_t
  • 포인터를 저장하기 위한 부호 없는 정수의 경우 uintptr_t
  • 플랫폼에서 가장 큰 정수 크기의 경우 intmax_t

코드에서 이러한 유형을 사용하면 다양한 플랫폼에서 특정 정수 크기와 독립적인 애플리케이션을 작성할 수 있습니다.

결론

long은 Unix 시스템에서 일반적으로 64비트인 반면, 64비트 Windows에서는 , Microsoft의 LLP64 접근 방식으로 인해 32비트로 유지됩니다. 다양한 정수 크기 규칙을 이해하고 플랫폼 중립적인 유형을 사용함으로써 개발자는 다양한 시스템에서 호환되는 코드를 작성할 수 있습니다.

위 내용은 64비트 Windows에서 'long'은 정말 64비트인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿