Wann sollte ich in der C- oder C ++ - Programmierung einfache und doppelte Anführungszeichen verwenden?
Wann sollte ich in der C- oder C ++ - Programmierung einfache und doppelte Anführungszeichen verwenden?
Antworten:
In C und in C ++ identifizieren einfache Anführungszeichen ein einzelnes Zeichen, während doppelte Anführungszeichen ein Zeichenfolgenliteral erstellen. 'a'
ist ein einzelnes Zeichenliteral, während "a"
ein Zeichenfolgenliteral ein 'a'
und ein Null-Terminator enthält (dh ein 2-Zeichen-Array).
In C ++ ist der Typ eines Zeichenliteral char
, aber beachten Sie, dass in C der Typ eines Zeichenliteral 4 ist int
, sizeof 'a'
dh 4 in einer Architektur, in der Ints 32 Bit (und CHAR_BIT 8) sind, während sizeof(char)
überall 1 ist.
Einige Compiler implementieren auch eine Erweiterung, die Konstanten mit mehreren Zeichen zulässt. Der C99-Standard sagt:
6.4.4.4p10: "Der Wert einer Ganzzahlzeichenkonstante, die mehr als ein Zeichen enthält (z. B. 'ab') oder ein Zeichen oder eine Escape-Sequenz enthält, die keinem Einzelbyte-Ausführungszeichen zugeordnet ist, ist implementierungsdefiniert. ""
Dies könnte zum Beispiel so aussehen:
const uint32_t png_ihdr = 'IHDR';
Die resultierende Konstante (in GCC, das dies implementiert) hat den Wert, den Sie erhalten, wenn Sie jedes Zeichen nehmen und nach oben verschieben, sodass 'I' in den höchstwertigen Bits des 32-Bit-Werts endet. Natürlich sollten Sie sich nicht darauf verlassen, wenn Sie plattformunabhängigen Code schreiben.
Einfache Anführungszeichen sind Zeichen ( char
), doppelte Anführungszeichen sind nullterminierte Zeichenfolgen ( char *
).
char c = 'x';
char *s = "Hello World";
const char *
.
'x'
ist eine Ganzzahl, die den numerischen Wert des Buchstabens x im Zeichensatz der Maschine darstellt"x"
ist ein Array von Zeichen, zwei Zeichen lang, bestehend aus ‘x’
gefolgt von‘\0’
Einfache Anführungszeichen stehen für ein einzelnes Zeichen. Doppelte Anführungszeichen stehen für eine Zeichenfolge (Zeichenarray). Sie können einfache Anführungszeichen verwenden, um eine Zeichenfolge zeichenweise aufzubauen, wenn Sie möchten.
char myChar = 'A';
char myString[] = "Hello Mum";
char myOtherString[] = { 'H','e','l','l','o','\0' };
Ich stöberte in Sachen herum wie: int cc = 'cc'; Es kommt vor, dass es sich im Grunde um eine byteweise Kopie in eine Ganzzahl handelt. Daher ist die Art und Weise, wie man es betrachtet, dass 'cc', was im Grunde genommen 2 cs sind, in niedrigere 2 Bytes der Ganzzahl cc kopiert wird. Wenn Sie nach einer Kleinigkeit suchen, dann
printf("%d %d", 'c', 'cc'); would give:
99 25443
Das liegt daran, dass 25443 = 99 + 256 * 99
'Cc' ist also eine Konstante mit mehreren Zeichen und keine Zeichenfolge.
Prost
Doppelte Anführungszeichen stehen für Zeichenfolgenliterale, z.
char str[] = "Hello world";
Einfache Anführungszeichen stehen für einzelne Zeichenliterale, z.
char c = 'x';
BEARBEITEN Wie David in einer anderen Antwort feststellte, ist der Typ eines Zeichenliteral int
.
char str[] = {'H','e','l','l','o'};
und str
hätten keinen Null-Terminator.
str
handelt es sich nicht um eine Zeichenfolge (zumindest nicht um eine Zeichenfolge im C-Stil, die als NTBS definiert ist).
char[]
(was die Leute oft als "Strings" bezeichnen), nullterminiert ist.
"hello" /*seamlessly connected to*/ "world"
. Dies kann für kommentierte mehrzeilige Nachrichten sinnvoll sein.
In C geben einfache Anführungszeichen wie 'a' Zeichenkonstanten an, während "a" ein Array von Zeichen ist, das immer mit dem Zeichen 0 abgeschlossen wird
Ein einfaches Anführungszeichen wird für Zeichen verwendet, während ein doppeltes Anführungszeichen für Zeichenfolgen verwendet wird.
printf("%c \n",'a');
printf("%s","Hello World");
eine Hallo Welt
Wenn Sie diese im umgekehrten Fall verwendet und ein einfaches Anführungszeichen für eine Zeichenfolge und ein doppeltes Anführungszeichen für ein Zeichen verwendet haben. Hier wird dies das Ergebnis sein;
printf("%c \n","a");
printf("%s",'Hello World');
für die erste Zeile. Sie haben Müllwert oder unerwartet. Oder Sie haben möglicherweise eine Ausgabe wie diese.
während für die zweite Aussage. Du wirst nichts sehen. Eins noch. Wenn Sie danach mehr Aussage haben. Sie werden Ihnen auch kein Ergebnis geben.
Hinweis: Die PHP-Sprache bietet Ihnen Flexibilität bei der einfachen Verwendung von einfachen und doppelten Anführungszeichen.
Einfache Anführungszeichen bezeichnen ein Zeichen, doppelte Anführungszeichen eine Zeichenfolge.
In Java ist es auch dasselbe.
Verwenden Sie ein einfaches Anführungszeichen mit einem einfachen Zeichen als:
char ch = 'a';
Hier 'a'
ist eine Zeichenkonstante und gleich dem ASCII
Wert von Zeichen a.
Verwenden Sie doppelte Anführungszeichen mit Zeichenfolgen als:
char str[] = "foo";
Hier "foo"
ist ein String-Literal.
Es ist in Ordnung zu benutzen, "a"
aber es ist nicht in Ordnung zu benutzen. 'foo'