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.h
stdint.h
stdint.h
나 Solaris 등의 할 수 없습니다.inttypes.h
포함하다stdint.h
Linux linux linux linux linux linux linux linux linux linux linux linux linux linux 。 if if if if if if inttypes.h
Linux ® 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
'programing' 카테고리의 다른 글
vee-module이 bootstrap-vue와 함께 작동하지 않음 (0) | 2022.07.26 |
---|---|
숫자 0 형식 지정 방법..9: 2자리 숫자로 표시(날짜 아님) (0) | 2022.07.26 |
구조체에 GDB에 있는 필드를 표시하려면 어떻게 해야 합니까? (0) | 2022.07.26 |
명명된 경로에 대한 매개 변수가 없습니다."x"가 정의되어야 합니다. (0) | 2022.07.26 |
stdout과 STDOUT_FILENO의 차이점 (0) | 2022.07.21 |