diferenças no comportamento entre char, char assinado e char não assinado
O código abaixo é compilado com sucesso, mas char se comporta de maneira diferente dos tipos inteiros.
cout ::ikIsX >() ::ikIsX >() ::ikIsX >()O resultado são três padrões de instanciação para três tipos: int8, uint8 e char. Por que isso acontece?
O mesmo não é verdade para números inteiros: int e uint32 resultam em uma instanciação de padrão e assinado int resulta em outra.
O motivo é provavelmente porque C trata char , char assinado e char não assinado como três tipos diferentes. Enquanto int é o mesmo que assinado int. Isso é verdade ou estou faltando alguma coisa?
#include
using namespace std; typedef signed char int8; typedef unsigned char uint8; typedef signed short int16; typedef unsigned short uint16; typedef signed int int32; typedef unsigned int uint32; typedef signed long long int64; typedef unsigned long long uint64; struct TrueType {}; struct FalseType {}; template struct isX { typedef typename T::ikIsX ikIsX; }; // Это int==int32 неоднозначно //template bool getIsTrue(); template ::ikIsX >() ::ikIsX >() ::ikIsX >() ::ikIsX >() ::ikIsX >() ::ikIsX >() Eu uso g 4.alguma coisa
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3