uint8_t / uint16_t / uint32_t /uint64_t 는 어떤 데이터 형식 입 니까?

3892 단어 데이터 형식
nesc 코드 에서 당신 은 모 르 는 데이터 형식 을 많이 볼 수 있 습 니 다. 예 를 들 어 uint 8t 등.어떻게 보면 새로운 데이터 형식 인 것 같 지만 C 언어 (nesc 는 C 의 확장) 에는 이런 데이터 형식 이 없 는 것 같 습 니 다!왜 또 u 또t 의많은 사람들 이 이런 의문 을 가지 고 있다.포럼 에서 어떤 사람 이 물 었 다.t 엔 딩 타 입 다 롱 타 입 아니 야?baidu 에서 찾 아 보고 나 서 야 답 을 찾 았 는데, 이때 서 야 자신 이 C 에 대해 너무 적 게 파악 하고 있다 는 것 을 알 게 되 었 다.
그럼t 의 뜻 은 도대체 무엇 을 의미 합 니까?구체 적 인 공식 답 은 찾 지 못 했 지만 비슷 한 답 이 있다 고 생각 합 니 다.이것 은 구조 적 인 레이 블 입 니 다. type / type edef 의 줄 임 말로 이해 할 수 있 습 니 다. 이것 은 type: def 를 통 해 정 의 된 것 이지 다른 데이터 형식 이 아 닙 니 다.
uint8_t,uint16_t,uint32_t 등 은 새로운 데이터 형식 이 아 닙 니 다. 그들 은 type: def 를 사용 하여 유형 에 지어 준 별명, 새 병 에 오래된 술 을 담 는 수작 일 뿐 입 니 다.그러나 type: def 를 얕 보지 마 세 요. 코드 유지 에 좋 은 역할 을 할 것 입 니 다.예 를 들 어 C 에 bool 이 없 기 때문에 한 소프트웨어 에서 일부 프로그래머 들 은 int 를 사용 하고 일부 프로그래머 들 은 short 를 사용 하면 혼 란 스 러 울 수 있 습 니 다. 가장 좋 은 것 은 typedef char bool 과 같은 typedef 로 정의 하 는 것 입 니 다.
일반적으로 C 의 프로젝트 에서 반드시 이런 일 을 해 야 합 니 다. 크로스 플랫폼 과 관련 될 수 있 기 때문에 서로 다른 플랫폼 은 서로 다른 글자 길이 가 있 기 때문에 사전 컴 파일 과 type: def 를 이용 하여 코드 를 가장 효과적으로 유지 할 수 있 습 니 다.사용자 의 편 의 를 위해 C99 표준 의 C 언어 하드웨어 는 우리 에 게 이런 유형 을 정 의 했 으 니 우 리 는 안심 하고 사용 하면 된다.
posix 기준 에 따라 일반 성형 에 대응 하 는 *t 형식: 1 바이트     uint8_t2 바이트     uint16_t4 바이트     uint32_t8 바이트     uint64_t
첨부: C99 표준 에서 inttypes. h 의 내용
/* There is some amount of overlap with <sys/types.h> as known by inet code */

#ifndef __int8_t_defined

# define __int8_t_defined

typedef signed char             int8_t; 

typedef short int               int16_t;

typedef int                     int32_t;

# if __WORDSIZE == 64

typedef long int                int64_t;

# else

__extension__

typedef long long int           int64_t;

# endif

#endif



/* Unsigned.  */

typedef unsigned char           uint8_t;

typedef unsigned short int      uint16_t;

#ifndef __uint32_t_defined

typedef unsigned int            uint32_t;

# define __uint32_t_defined

#endif

#if __WORDSIZE == 64

typedef unsigned long int       uint64_t;

#else

__extension__

typedef unsigned long long int  uint64_t;

#endif

 
포맷 출력:
unit64_t     %llu   
unit32_t     %u
unit16_t    %hu

좋은 웹페이지 즐겨찾기