"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > A seguir estão os títulos de perguntas e respostas em inglês gerados com base no conteúdo do artigo que você forneceu: Por que `char` se comporta de maneira diferente dos tipos inteiros na instanciação de modelos ao comparar `char`, `signed char` e `unsi

A seguir estão os títulos de perguntas e respostas em inglês gerados com base no conteúdo do artigo que você forneceu: Por que `char` se comporta de maneira diferente dos tipos inteiros na instanciação de modelos ao comparar `char`, `signed char` e `unsi

Publicado em 2024-11-03
Navegar:192

以下是根据您提供的文章内容生成的英文问答类标题:

Why does `char` behave differently from integer types in template instantiation when comparing `char`, `signed char`, and `unsigned char`?

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

Tutorial mais recente Mais>

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