Heim > Artikel > Backend-Entwicklung > Warum gibt „456“ 1 in C „56“ aus?
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!