Unterschiede im Verhalten zwischen char, signiertem char und unsigned char
Der folgende Code wird erfolgreich kompiliert, aber char verhält sich anders als ganzzahlige Typen.
cout ::ikIsX >() ::ikIsX >() ::ikIsX >()Das Ergebnis sind drei Instanziierungsmuster für drei Typen: int8, uint8 und char. Warum passiert das?
Das Gleiche gilt nicht für ganze Zahlen: int und uint32 führen zu einer Musterinstanziierung, und signiertes int führt zu einer anderen.
Der Grund liegt wahrscheinlich darin, dass C char behandelt, signiertes Zeichen und unsigniertes Zeichen als drei verschiedene Typen. Während int dasselbe ist wie signiert int. Stimmt das, oder übersehe ich etwas?
#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 >() Ich verwende g 4.something
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3