„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Im Folgenden finden Sie englische Frage- und Antworttitel, die auf der Grundlage des von Ihnen bereitgestellten Artikelinhalts generiert wurden: Warum verhält sich „char“ beim Vergleich von „char“, „signed char“ und „unsigned char“ anders als ganzzahlige

Im Folgenden finden Sie englische Frage- und Antworttitel, die auf der Grundlage des von Ihnen bereitgestellten Artikelinhalts generiert wurden: Warum verhält sich „char“ beim Vergleich von „char“, „signed char“ und „unsigned char“ anders als ganzzahlige

Veröffentlicht am 03.11.2024
Durchsuche:651

以下是根据您提供的文章内容生成的英文问答类标题:

Why does `char` behave differently from integer types in template instantiation when comparing `char`, `signed char`, and `unsigned char`?

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

Neuestes Tutorial Mehr>

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