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

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

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-01 08:01:02475Durchsuche

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!

Stellungnahme:
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