programing

C에서 32비트 정수를 선언하는 방법

itsource 2022. 7. 26. 22:58
반응형

C에서 32비트 정수를 선언하는 방법

어느 플랫폼에서나 항상 4바이트인 정수 유형을 선언하는 가장 좋은 방법은 무엇입니까? 16비트를 탑재한 에 대해서는 int.

#include <stdint.h>

int32_t my_32bit_int;

C99 이후

<stdint.h>.

에서 2의의 보완 32비트 정수를 정의해야 .int32_t.

않으면 int_least32_t구현에서 지원되는 정수 유형으로 표현에 관계없이 최소 32비트(2의 보형, 1의 보형 등)입니다.

, there있있 there 도 있다.int_fast32_t최소 32비트 폭의 정수 유형으로, 해당 크기 요건에 대해 가장 빠른 연산을 허용하기 위해 선택되었습니다.

ANSI C

하시면 됩니다.long표준으로 지정된 최소 범위 요건에 따라 최소 32비트 이상의 폭이 보장됩니다.

타입을 하여 32비트 숫자를 경우 하여 사용할 수 .<limits.h>:

#define TARGET_MAX 2147483647L

#if   SCHAR_MAX >= TARGET_MAX
  typedef signed char int32;
#elif SHORT_MAX >= TARGET_MAX
  typedef short int32;
#elif INT_MAX   >= TARGET_MAX
  typedef int int32;
#else
  typedef long int32;
#endif

#undef TARGET_MAX

C는 정수 타입의 정확한 사이즈에는 그다지 관여하지 않습니다.C99는 헤더 stdint.h를 도입하고 있습니다.이것은 아마도 가장 좋은 방법입니다.이 항목을 포함하면 예를 들어 를 사용할 수 있습니다. int32_t물론 모든 플랫폼이 이를 지원하는 것은 아닙니다.

Corey의 답변은 "최선"으로 맞지만, 실제로는 단순한 "int"도 사용할 수 있습니다(16비트 int를 사용하는 시스템을 무시하고 있습니다).이 시점에서는 32비트에 의존하는 코드가 너무 많기 때문에 시스템 벤더는 이를 변경하지 않습니다.

(많은 64비트 시스템에서 32비트가 롱인 이유와 롱인 이유 참조)

단, int32_t를 사용하면 이 문제가 지속되지 않는다는 장점이 있습니다.

시스템에 stdint.h 를 사용할 수 없는 경우는, 독자적인 것을 작성합니다.난 항상 "types"라는 파일을 가지고 있다.모든 서명된/부호화된 8, 16 및 32비트 값에 대한 typeef를 가진 h"입니다.

하다, 하다, 하다, 하다를 넣어야 요.inttypes.hstdint.hstdint.h나 Solaris 등의 할 수 없습니다.inttypes.h 포함하다stdint.hLinux linux linux linux linux linux linux linux linux linux linux linux linux linux 。 if if if if if if inttypes.hLinux ® Solaris linux linux에 linux 。

이 링크는 제가 말하는 내용을 설명합니다: HP link at intypes.h

그리고 이 링크에는 왜 사용하지 않는지를 보여주는 표가 있습니다.long또는int데이터 타입에 특정 수의 비트가 존재하는 경우.휴대용 데이터 유형에 대한 IBM 링크

브라이언 글래드먼의 복사본을 찾아서brg_types.h없으면stdint.h.

brg_types.h는 플랫폼 상의 다양한 정수 크기를 검출하여 공통 크기(8, 16, 32 및 64비트)의 typedef를 작성합니다.

또한 타겟 플랫폼에 따라 빌드 시스템에 자동 툴을 사용할 수 있습니다.

stdint인지 확인할 수 있습니다.h/inttypes.h가 존재하며 존재하지 않을 경우 config에 적절한 typedef가 생성됩니다.h"

stdint.h가 확실한 선택이지만 반드시 사용할 수 있는 것은 아닙니다.

휴대용 라이브러리를 사용하는 경우 휴대용 고정 너비 정수를 이미 제공할 수 있습니다.예를 들어 SDL에는Sint32(S는 "signed"를 나타냅니다).GLib는gint32.

부호 있는 길이 또는 부호 없는 길이로 32비트를 선언할 수 있습니다.

int32_t variable_name;
uint32_t variable_name;

언급URL : https://stackoverflow.com/questions/1229131/how-to-declare-a-32-bit-integer-in-c

반응형