uint와 부호 없는 int의 차이점?
와 어떤 차이가 있습니까?uint
그리고.unsigned int
?
이 사이트를 보고 있습니다만, 모든 질문은 C# 또는 C++에 관한 것입니다.C언어에 대한 답변을 듣고 싶습니다.
관련된 경우 Linux에서 GCC를 사용하고 있습니다.
uint
표준 타입이 아닙니다.unsigned int
이에요.
시스템에 따라 int를 typedef로 정의할 수 있습니다.
typedef 부호 없는 int;
이러한 시스템에서는 동일합니다.단, uint는 표준 타입이 아니기 때문에 모든 시스템이 지원하지 않을 수 있으므로 휴대할 수 없습니다.
Erik, Teoman Soygul, taskinoor의 답변을 조금 연장합니다.
uint는 표준이 아닙니다.
따라서 다음과 같이 자신의 속기를 사용하는 것은 권장되지 않습니다.
typedef unsigned int uint;
대신 플랫폼 고유성을 찾는 경우(예를 들어 stdint를 포함하여 int 점유 비트 수를 지정해야 합니다).h:
#include <stdint.h>
는 다음과 같은 정수의 표준 카테고리를 표시합니다.
일정한 정확한 너비를 가진 정수형
적어도 특정 특정 너비를 가진 정수 형식
지정된 최소 너비가 있는 가장 빠른 정수 유형
개체에 대한 포인터를 저장할 수 있을 만큼 넓은 정수 형식
폭이 가장 큰 정수형
예를 들어.
정확한 폭의 정수형
typedef name int N _t는 너비 N, 패딩 비트 없음 및 2의 완성을 나타내는 부호 있는 정수 유형을 지정합니다.따라서 int8_t는 정확히 8비트의 폭을 갖는 부호 있는 정수형을 나타냅니다.
typedef name uint N _t는 너비가 N인 부호 없는 정수 유형을 지정합니다.따라서 uint24_t는 정확히 24비트의 폭을 갖는 부호 없는 정수형을 나타냅니다.
정의하다
int8_t
int16_t
int32_t
uint8_t
uint16_t
uint32_t
여기 있는 모든 답변에는 실제 이유가 언급되어 있지 않습니다.uint
.
그것은 명백하게typedef
의unsigned int
그렇다고 해서 유용성이 설명되는 것은 아닙니다.
진짜 질문은,
왜 누군가가 기본 유형을 축약 버전으로 입력하려고 합니까?
타이핑을 절약하기 위해?
아니요, 그들은 필요해서 그렇게 했어요.
템플릿이 없는 언어인 C언어를 생각해 보겠습니다.
어떤 타입이든 가능한 자신의 벡터를 어떻게 찍어낼 수 있을까요?
넌 보이드 포인터로 뭔가를 할 수 있어
그러나 템플릿을 에뮬레이션하면 매크로에 의존하게 됩니다.
템플릿 벡터를 정의합니다.
#define define_vector(type) \
typedef struct vector_##type { \
impl \
};
유형을 선언합니다.
define_vector(int)
define_vector(float)
define_vector(unsigned int)
그리고 세대를 거듭할 때, 그 유형은 하나의 토큰이어야 한다는 것을 깨달으십시오.
typedef struct vector_int { impl };
typedef struct vector_float { impl };
typedef struct vector_unsigned int { impl };
uint
의 가능한 적절한 줄임말입니다.unsigned int
독성이이좋좋좋기준이 C의 기준이 아니다.사용자 자신의 책임에 대해 (다른 모든 정의와 같이) 정의하고 사용할 수 있습니다., 일부 는 " " "를 정의하고 있습니다.uint
저저 . 제가 찾은 건sys/types.h
; 의 컴파일러(ARM):
# ifndef _POSIX_SOURCE
//....
typedef unsigned short ushort; /* System V compatibility */
typedef unsigned int uint; /* System V compatibility */
typedef unsigned long ulong; /* System V compatibility */
# endif /*!_POSIX_SOURCE */
이는 Unix System V 표준으로 프로그램된 패밀리 소스를 위한 양보인 것 같습니다.이 원치 않는 동작을 끄려면(원하는 대로)
#define uint unsigned int
나 혼자, 내가 제일 먼저 설정했어.
#define _POSIX_SOURCE
시스템의 헤더는 표준이 아닌 것을 정의해서는 안 됩니다.하지만 안타깝게도 거기에는 많은 것들이 정의되어 있습니다.
웹 페이지 https://www.vishia.org/emc/html/Base/int_pack_endian.html#truean-uint-problem-admissibleness-of-system-definitions response에서도 참조하십시오.https://www.vishia.org/emc 를 참조해 주세요.
unsigned int
을 사용하는 '(표준)'을 사용합니다.unsigned int
모든 컴파일러에서 지원되는 것을 보증하기 때문입니다(표준으로 되어 있습니다).
언급URL : https://stackoverflow.com/questions/5678049/difference-between-uint-and-unsigned-int
'programing' 카테고리의 다른 글
Vue.js 컴포넌트를 동적으로 추가 또는 삭제하는 방법(프로그래밍 또는 즉시) (0) | 2022.08.18 |
---|---|
라우터의 getter에서 데이터를 가져올 수 없습니다.[Vux 퀘이사] (0) | 2022.08.18 |
vuetify: 동적 목록을 사용하는 v-chip v-model (0) | 2022.08.18 |
C에서 "미사용 파라미터" 경고를 억제하려면 어떻게 해야 합니까? (0) | 2022.08.18 |
(왜) 초기화되지 않은 변수를 사용하는 것은 정의되지 않은 동작입니까? (0) | 2022.08.18 |