Heim > Backend-Entwicklung > C++ > Warum gibt „456' 1 in C „56' aus?

Warum gibt „456' 1 in C „56' aus?

Mary-Kate Olsen
Freigeben: 2024-11-01 08:01:02
Original
472 Leute haben es durchsucht

Why does

Verstehen der Ausgabe von „456“ 1

Im C-Code kann der Ausdruck „456“ 1 verwirrend erscheinen, wenn er „56“ statt „457“ ausgibt. " Um dieses Verhalten zu verstehen, müssen wir in die Feinheiten des Codes eintauchen.

In C werden Zeichenfolgen als Zeichenarrays gespeichert und das Literal „456“ entspricht dem Array {'4', '5' , '6', ' '}. Wenn „456“ in einem arithmetischen Ausdruck verwendet wird, erfolgt eine implizite Konvertierung. Das Array zerfällt in einen Zeiger auf sein erstes Element, im Wesentlichen einen Zeiger auf „4“.

Wenn Sie nun 1 zu diesem Zeiger hinzufügen, wird er zum nächsten Zeichen verschoben, nämlich „5“. Wenn std::cout auf ein const char* (Zeiger auf ein Zeichenarray) stößt, interpretiert es es als nullterminierte Zeichenfolge. Da das Zeichen „6“ vor dem Nullterminator auftritt, wird nur die Teilzeichenfolge „56“ gedruckt.

Zusammenfassend lässt sich sagen, dass die Zeigerarithmetik auf das Zeichenarray „456“ effektiv das erste Zeichen „4“ überspringt. und gibt die restlichen Ziffern aus, was die Ausgabe „56“ ergibt.

Das obige ist der detaillierte Inhalt vonWarum gibt „456' 1 in C „56' aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage