char!=(signed char), char!=(unsigned char) [duplicate]
In bestimmten Szenarien behandelt C char, signierte char und unsigned char als unterschiedliche Typen, im Gegensatz zu int und seinen Varianten. Dieses Verhalten ergibt sich aus der Natur der Zeichentypen in C, wie im C-Standard beschrieben:
Plain char, signed char, and unsigned char are three distinct types.
Während int normalerweise gleichbedeutend mit signiertem int ist, hat char nicht die gleiche Beziehung zu signiertem Char oder unsigniertem Char . Dies bedeutet, dass Vorlagenspezialisierungen für diese Typen separat instanziiert werden.
Im bereitgestellten Code werden drei Vorlagenspezialisierungen erstellt:
Allerdings für int und seinen Varianten wird nur eine Vorlagenspezialisierung erstellt, da sie alle als vom gleichen Typ betrachtet werden, sofern nicht ausdrücklich als signiert oder nicht signiert angegeben.
Daher zeigt die Ausgabe im gegebenen Beispiel drei verschiedene Werte für isX::ikIsX-Typ-Aliase für int8, uint8 und char, während für int32, uint32 und int nur ein Wert angezeigt wird.
Diese Unterscheidung ist wichtig zu verstehen, wenn Sie mit Vorlagen-Metaprogrammierung und Typ-Introspektion arbeiten C.
Das obige ist der detaillierte Inhalt vonWarum verhalten sich „char', „signed char' und „unsigned char' anders als „int' und seine Varianten in C-Vorlagenspezialisierungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!