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
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