c++해결 인쇄 불가 uint 8질문

장 uint8t.unsigned 형식 으로 전환
일원 연산 자 사용+(와-연산 자 대응)
테스트 코드 는 다음 과 같 습 니 다.

#include <cstdint>
#include <iostream>
#include <typeinfo>
int main()
{
 std::uint8_t uint8_num = 10;
 std::cout << "uint8_t num is " << uint8_num << std::endl; //    
 std::cout << "after cast to unsigned, uint8_t num is " << unsigned(uint8_num) << std::endl; //     
 std::cout << "with a unary + operator, uint8_t num is " << +uint8_num << std::endl; //     
 std::cout << "type of '+uint8_num' is " << typeid(+uint8_num).name() << std::endl;
 return 0;
}
실행 결 과 는 다음 과 같다.

보 이 는+연산 자 를 사용 하 는 원리 도 유형 변환(uint 8t 에서 int 로 전환)
추가 지식:C 언어 printf 다양한 데이터 형식 인쇄 방법(u8/s8/u16/s16.../u64/double/float)(전)
먼저 u8,s8 등 데이터 형식의 정 의 를 알 아야 합 니 다.

typedef signed char s8; 
typedef unsigned char u8; 
 
typedef signed short s16; 
typedef unsigned short u16; 
 
typedef signed int s32; 
typedef unsigned int u32; 
 
typedef signed long long s64; 
typedef unsigned long long u64; 
시스템 구조 와 관련 된,include/linux/type.h 파일 에 정의:

/* bsd */
typedef unsigned char u_char;
typedef unsigned short u_short;
typedef unsigned int u_int;
typedef unsigned long u_long;
/* sysv */
typedef unsigned char unchar;
typedef unsigned short ushort;
typedef unsigned int uint;
typedef unsigned long ulong;
#ifndef __BIT_TYPES_DEFINED__
#define __BIT_TYPES_DEFINED__
typedef __u8 u_int8_t;
typedef __s8 int8_t;
typedef __u16 u_int16_t;
typedef __s16 int16_t;
typedef __u32 u_int32_t;
typedef __s32 int32_t;
#endif /* !(__BIT_TYPES_DEFINED__) */
typedef __u8 uint8_t;
typedef __u16 uint16_t;
typedef __u32 uint32_t;
#if defined(__GNUC__)
typedef __u64 uint64_t;
typedef __u64 u_int64_t;
typedef __s64 int64_t;
각종 데이터 형식의 인쇄 방식 에 대해 다음 과 같이 요약 한다.
데이터 형식
인쇄 형식
u8
%d
s8
%d
u16
%d or %hu
s16
%d or %hd
u32
%u
s32
%d
u64
%llu
s64
%lld
int
%d
unsigned int
%u
short int
%d or %hd
long
%ld
unsigned long
%lu
long long
%lld
unsigned long long
%llu
char
%c
char *
%s
bool (#define stdbool.h)
%d
unsigned int/int---16 진수
%0x
unsigned long/long--->16 진수
%0lx
long long/unsigned long--->16 진법
%0llx
unsigned int/int--->8 진법
%0o
unsigned long/long--->8 진법
%0lo
long long/unsigned long--->8 진법
%0llo
float
%f
double
%f or %lf
과학 기술 유형(double 유형 으로 전환 해 야 합 니 다)
%e
출력 필드 너비 제한
%x.yf(x:정수 길이,y:소수점 길이)
문 제 를 풀 려 면 Liux kernel 에서 도 bool 을 사용 하여 변 수 를 정의 합 니 다.code 를 보고 정 의 는 다음 과 같 습 니 다.
typedef _Bool bool;
그러나 구체 적 인 정의 가 어디 에 있 는 지 는 찾 지 못 했다.
다음은 stdbool.h 의 source code 입 니 다.

#define _STDBOOL_H
#ifndef __cplusplus
#define bool _Bool
#define true 1
#define false 0
#else /* __cplusplus */
/* Supporting _Bool in C++ is a GCC extension. */
#define _Bool bool
#if __cplusplus < 201103L
/* Defining these macros in C++98 is a GCC extension. */
#define bool bool
#define false false
#define true true
#endif
#endif /* __cplusplus */
/* Signal that all the definitions are present. */
#define __bool_true_false_are_defined 1
#endif /* stdbool.h */
Liux kernel bool type 도 대충 설명 했다.
이 c++해결 은 uint 8 을 인쇄 할 수 없습니다.t 유형 변수의 문 제 는 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 에 게 참고 가 되 고 저희 도 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기