Hi
Zitat Zitat von BlackBerry
Hier mal ein zitat aus "Programmieren in C", der deutschen ausgabe des Buches "The C Programming Language" von D. M. Ritchie und B. W. Kernigham, zweite Auflage:
"Der Typ int legt fest, daß die angegebenen Variablen ganzzahlige Werte annehmen" (S. 9 Z. 15)
Und damit ist char kompatibel zu int.
Auch char ist ein Variablentyp zum speichern von Ganzzahlen.
Allerdings reicht dessen Wertebereich "signed" nur von -128 bis 127, bzw. "unsigned" von 0 bist 255, der Wertebereich von int ist da um einiges umfangreicher.

Der entscheidende Unterschied zwischen char und int ist dessen Größe: char belegt normalerweise 8bit (2^8 = 256 mögliche Werte), während int im Normalfall 32bit (2^32 = 4.294.967.296 mögliche Werte) belegt.
Da das basic execution character set von C nur 96 Zeichen umfasst (siehe 5.2.1p3), ist es natürlich sinnvoller, Variablen vom Typ char zum repräsentieren dieser Zeichen zu verwenden und nicht int (und aus genau diesem Grund erwarten alle Stringfunktionen auch Variablen vom Typ char* und nicht etwa uint64_t uint_least64_t*).

Benötigt man mehr Zeichen, so kann man mit wchar_t auch UTF-32 (unter Windows nur UTF-16), also Unicode verwenden. Unter *nix ist wchar_t 32bit groß, entspricht damit also int, wie man sieht:
Code:
$ nl -ba intwchar.c
     1  #include <stdio.h>
     2  #include <wchar.h>
     3
     4  int main(void)
     5  {
     6    wchar_t *wc_string = L"wchar_t*\n";
     7    int     *i_string  = L"int*\n";
     8
     9    fputws(wc_string, stdout);
    10    fputws(i_string, stdout);
    11
    12    return 0;
    13  }
$ gcc -std=c99 -Wall -pedantic -o intwchar intwchar.c
$ ./intwchar
wchar_t*
int*
GreetZ RiDER