En programmation C, les caractères char, signé et non signé sont considérés comme des types de données distincts. . Ce comportement est différent des entiers, où int et signé int sont du même type, et unsigned int est un autre type distinct.
Question :
Pourquoi est-ce que le Le code ci-dessous se compile différemment pour les types char et pour les types int ?
cout << getIsTrue< isX<int8>::ikIsX >() << endl; cout << getIsTrue< isX<uint8>::ikIsX >() << endl; cout << getIsTrue< isX<char>::ikIsX >() << endl;
Réponse :
C fait la distinction entre les caractères char, signé et non signé en trois types distincts. C'est pourquoi les instanciations de modèles pour char, int8 et uint8 sont distinctes.
Pour les entiers, cependant, int et signé int sont du même type, tandis que unsigned int est un type différent. C'est pourquoi les instanciations de modèles pour int, int32 et uint32 génèrent seulement deux modèles uniques.
La norme [basic.fundamental](https://eel.is/c draft/basic.fundamental) indique :
"Les caractères simples, les caractères signés et les caractères non signés sont trois types distincts."
Cela signifie qu'ils ont des représentations d'objet différentes et peuvent avoir différentes plages de valeurs, en fonction de l'implémentation.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!