Maison  >  Article  >  développement back-end  >  Pourquoi `char`, `signed char` et `unsigned char` sont-ils traités différemment de `int`, `signed int` et `unsigned int` en C ?

Pourquoi `char`, `signed char` et `unsigned char` sont-ils traités différemment de `int`, `signed int` et `unsigned int` en C ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-26 22:37:03275parcourir

Why are `char`, `signed char`, and `unsigned char` Treated Differently from `int`, `signed int`, and `unsigned int` in C  ?

Char!=(Signed Char), Char!=(Unsigned Char)

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn