Was ist der Unterschied zwischen "a" und "a" und zwischen "3" und "3" in der Programmiersprache C?


Antwort 1:

Alles, was sich zwischen "" befindet, wird als Zeichenfolge (Array von Zeichen) angesehen, wohingegen alles, was sich in "" befindet, als einzelnes Zeichen angesehen wird.

Wenn Sie "" verwenden, wird am Ende der Zeichenfolge ein Nullzeichen ("\ 0") eingefügt, um das Ende der Zeichenfolge zu markieren. Sie können auch über den Index auf jedes Zeichen in einer Zeichenfolge zugreifen, genau wie auf ein Element in einem Array.

Wenn Sie mit einem einzelnen Zeichen arbeiten, müssen Sie einfache Anführungszeichen verwenden, wenn Sie mit Zeichenfolgen arbeiten, verwenden Sie "".

So etwas wie char a = "a"; wird einen Fehler auslösen, da Strings als Zeiger gespeichert werden, während ein Zeichen in seinem äquivalenten ASCII-Code (als Ganzzahl) gespeichert wird


Antwort 2:

Doppelte Anführungszeichen definieren Zeichenfolgen mit abschließendem Nullzeichen. Einfache Anführungszeichen tun das nicht.

"a" definiert 0x61, 0x00
'a' definiert 0x61

"3" definiert 0x33, 0x00
'3' definiert 0x33

So können wir definieren

char * p = "3";

Das können wir aber nicht

char * p = '3';

Es wird ein Fehler wie "Initialisieren des Variablentyps char * mit rvalue char" ausgegeben.

Aber wir können das schaffen

char c = '3';