char!=(signed char), char!=(unsigned char) [duplicata]
Dans certains scénarios, C traite char, les caractères signés et les caractères non signés en tant que types distincts, contrairement à int et ses variantes. Ce comportement découle de la nature des types de caractères en C , comme indiqué par la norme C :
Plain char, signed char, and unsigned char are three distinct types.
Bien que int soit généralement synonyme de int signé, char n'a pas la même relation avec un caractère signé ou un caractère non signé. . Cela signifie que les spécialisations de modèles pour ces types seront instanciées séparément.
Dans le code fourni, trois spécialisations de modèles sont créées :
Cependant, pour int et ses variantes, une seule spécialisation de modèle est créée car elles sont toutes considérées comme étant du même type, sauf si elles sont explicitement spécifiées comme signées ou non signées.
Par conséquent, dans l'exemple donné, la sortie affichera trois valeurs différentes pour le isX::ikIsX tape des alias pour int8, uint8 et char, alors qu'il n'affichera qu'une seule valeur pour int32, uint32 et int.
Cette distinction est cruciale à comprendre lorsque l'on travaille avec la métaprogrammation de modèles et l'introspection de type dans C.
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!