# Char (Datentyp)

Char oder Character ([kæɹ, kʌɹ], von englisch character, „Zeichen“) ist ein Datentyp (in vielen Programmiersprachen) für Felder, deren Elemente jeweils ein Zeichen repräsentieren.

## Datentyp

char als Datentyp legt fest, dass die einzelnen Zeichen eines Speicherbereichs aus je (in der Regel) 8 Bits bestehen, die je ein darstellbares Zeichen (Buchstabe, Ziffer, Sonderzeichen, …) repräsentieren. Welches Zeichen dies ist, ergibt sich aus dem Inhalt der Speicherstelle; für jede Hex-Kombination (mit möglichem Wertebereich von 00$_{hex}$ bis FF$_{hex}$) gilt gemäß der verwendeten Zeichencodierung ein bestimmtes Zeichen als vereinbart; z. B. 48$_{hex}$='H', 30$_{hex}$='0'. Vorzeichen (positiv/negativ) treten – im Gegensatz zu numerischen Formaten – bei char-Zeichen nicht auf.
Der char ist nur bedingt für Berechnungen und Indizierung geeignet, da er in den meisten Programmiersprachen 1 Byte breit ist. Für Variablen, die einen größeren Wertebereich benötigen, müssen daher andere Datentypen wie z. B. Integer verwendet werden.

## Zeichenkodierung

Die meisten Programmiersprachen stellen ein Zeichen in einem Byte (8 Bit) dar, wobei als Zeichensatz ASCII und dessen Ableitungen wie ISO 8859-1 sowie EBCDIC die verbreitetsten Kodierungen sind.
Neuere Programmiersprachen wie C# oder Java verwenden zwei Byte pro Zeichen (UNICODE) und kodieren Zeichen in UTF-16. Die etablierten Sprachen wie C und C++ wurden um den mehrbytigen Datentyp wchar_t erweitert (UnicodeString unter Object-Pascal).

## Literale, Konstanten, Variable

Zeichen können in Form von Literalen direkt im Quelltext verwendet werden. In Programmiersprachen, deren Syntax an die Programmiersprache C angelehnt ist, werden sie dazu in einfache Anführungszeichen eingeschlossen, z. B. 'a'. Alternativ können Zeichen in der Definition von Feldern als Konstante angelegt oder einer Variablen durch einen entsprechenden Befehl (direkt oder als Teil einer übergeordneten Datenstruktur) zugewiesen werden; FeldA = FeldB, BereichX (inkl. FeldA) = Eingabe.
Um Sonderzeichen darzustellen, können sogenannte Escape-Sequenzen verwendet werden. Sehr häufig dient dabei der umgekehrte Schrägstrich als Escape-Zeichen, so wird beispielsweise ein horizontales Tabulatorzeichen als '\t' dargestellt.

## Operationen

Zeichen sind abhängig von der gewählten Kodierung geordnet. Daher bieten die meisten Programmiersprachen entsprechende Vergleichsoperatoren wie ist gleich (z. B. „=“, „==“ oder „IS EQUAL“), ist ungleich (z. B. „!=“, „<>“, „IS NOT EQUAL“), ist kleiner als (z. B. „<“ oder „IS LESS THAN“), ist größer als (z. B. „>“ oder „IS GREATER THAN“).
Ebenso gibt es üblicherweise Operatoren zum Erhöhen (z. B. „++“, „SUCC“) und Vermindern (z. B. „--“ oder „PRED“), also ermitteln des Nachfolgers oder Vorgängers eines Zeichens.
Da jedes Zeichen, abhängig von seiner Kodierung durch einen bestimmten Wert repräsentiert wird, bieten viele Programmiersprachen auch die Möglichkeit, Zeichen in Zahlen umzuwandeln und umgekehrt. Dies kann entweder impliziert passieren, z. B. indem einer numerischen Variablen ein Zeichen zugewiesen wird, oder explizit durch Verwendung einer Funktion, die z. B. kurz „ord“ oder „char“ heißen kann.