"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Voici les titres de questions et réponses en anglais générés en fonction du contenu de l'article que vous avez fourni : Pourquoi « char » se comporte-t-il différemment des types entiers dans l'instanciation de modèle lorsque l'on compare « ch

Voici les titres de questions et réponses en anglais générés en fonction du contenu de l'article que vous avez fourni : Pourquoi « char » se comporte-t-il différemment des types entiers dans l'instanciation de modèle lorsque l'on compare « ch

Publié le 2024-11-03
Parcourir:127

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

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

différences de comportement entre les caractères char, signé et non signé

Le code ci-dessous se compile avec succès, mais char se comporte différemment des types entiers.

cout ::ikIsX  >() ::ikIsX  >() ::ikIsX  >() 

Le résultat est trois modèles d'instanciation pour trois types : int8, uint8 et char. Pourquoi cela se produit-il ?

La même chose n'est pas vraie pour les entiers : int et uint32 entraînent une instanciation de modèle, et signé int en entraîne une autre.

La raison est probablement parce que C traite char , les caractères signés et les caractères non signés sont trois types différents. Tandis que int est identique à signé int. Est-ce vrai ou est-ce que j'ai raté quelque chose ?

#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  >() 

J'utilise g 4.quelque chose

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3