"cout" Text zu Variable hinzufügen
-
Danke für diese Erklärung, dass
"<...>" + intConstVal
zu Pointer konvertiert, und dann den Pointer weitersetzt, wusste ich selbst noch nicht.
-
@omggg sagte in "cout" Text zu Variable hinzufügen:
Danke für diese Erklärung, dass "<...>" + intConstVal zu Pointer konvertiert,
Das habe ich nicht geschrieben. Ich habe geschrieben, dass
"string"
bereits ein Pointer ist, nicht dass da irgendwas in Pointer konvertiert wird. Pointer + Zahl addiert dann die Zahl zum Pointer dazu unter Beachtung der Größe der Objekte, auf die der Pointer zeigt, d.h.pointer + 1
zeigt auf das folgende Objekt.Edit: Ah ja, ihr habe natürlich recht, dass
"string"
einconst char[7]
ist. Sorry, dass ich hier Verwirrung gestiftet habe.
-
Technisch ist aber ein String-Literal
"..."
einconst char[N]
und wird dann bei+
zu einem Zeiger (pointer decay).
-
Tatsächlich ist
"string"
einconst char[7]
. Und der Standard nennt dieses Verhalten von Arrays, dass sie sich bis auf 2-3 Ausnahmen wie ein Pointer verhalten, eine "Konvertierung".
-
@wob sagte in "cout" Text zu Variable hinzufügen:
Das habe ich nicht geschrieben. Ich habe geschrieben, dass "string" bereits ein Pointer ist,
Das ist aber nur die halbe Wahrheit, tatsächlich ist es ein Pointer auf einen Speicherbereich, der eine Zeichenkette darstellt...
-
@omggg sagte in "cout" Text zu Variable hinzufügen:
@wob sagte in "cout" Text zu Variable hinzufügen:
Das habe ich nicht geschrieben. Ich habe geschrieben, dass "string" bereits ein Pointer ist,
Das ist aber nur die halbe Wahrheit, tatsächlich ist es ein Pointer auf einen Speicherbereich, der eine Zeichenkette darstellt...
Nein. Es ist ein
const char[7]
.
-
Bitte zerfleischt euch nicht ... ich weiß (fast genau), was gemeint ist.
-
@omggg sagte in "cout" Text zu Variable hinzufügen:
Bitte zerfleischt euch nicht ... ich weiß (fast genau), was gemeint ist.
Nein, tust du nicht.
-
Ich der JLS (und die habe ich gelesen) wird in vergleichbaren Fällen jedenfalls auch von "Konvertierung" gesprochen, das genügt mir. ... Und ja, eine Referenz in Java ist quasi auch einfach nur ein Pointer.
-
@omggg Einem Pointer kannst du einen anderen Wert (Adresse) zuweisen.
Dann zeigt er woanders hin.Bei einem
const char[...]
geht das nicht. Der verweist immer auf denselben Speicher.
-
Danke für die Erklärung. ... Dann eben ein konstanter Pointer auf einen Speicherbereich, der eine Zeichenkette darstellt, und mit dem gerechnet werden kann.
-
...
Frage: Was wird cout << "hallo" + 2; in C++ ausgeben? ChatGPT: In C++ wird der Ausdruck "hallo" + 2 als Zeiger auf das dritte Zeichen im String interpretiert, da die Zeichenkette als Array von Zeichen betrachtet wird und die Addition eines gegebenen Index zur Verschiebung im Array führt. Wenn wir also "hallo" als Array von Zeichen betrachten und 2 addieren, verweist der resultierende Zeiger auf das dritte Element, also auf das 'l'. Daher wird "lo" ausgegeben.
Ist das zu ungenau?
-
@omggg sagte in "cout" Text zu Variable hinzufügen:
[...] Daher wird "lo" ausgegeben.
Ist das zu ungenau?
Die Begründung ist richtig, aber das Ergebnis falsch. Es wird natürlich "llo" ausgegeben. ChatGPT ist da mit dem "dritten Element" und dem Index 3 durcheinander gekommen.
-
Danke, das ist richtig. Ich habe das Model 3.5-turbo verwendet. Es ist gut möglich, dass mit 4 das Ergebnis anders aussehen würde... Generell kann das Sprachmodell nicht so gut rechnen. Frage es zum Beispiel mal nach einer hohen i.-ten Primzahl. Es wird eine "ungefähr im richtigen Bereich" richtige Primzahl zurückgeben.
-
... Und es hat zum Beispiel schon Schwierigkeiten, zu einem gegebenen Datum 2000 Tage zu addieren.
-
@omggg Vielleicht solltest du dich mal damit auseinandersetzen, wie so ein Language Model funktioniert: https://writings.stephenwolfram.com/2023/02/what-is-chatgpt-doing-and-why-does-it-work/
-
Schlag doch mal was vor, was neue Erkenntnisse bringt.
-
Das schreibst ausgerechnet du?
-
Ja, was soll denn die dumme Unterstellung?
-
@omggg Ernsthaft? Ich habe vorgeschlagen, das du dich mal mit der Materie auseinander setzt. Dann hättest du deinen Erkenntniss gewinn.
Hast du in den Artikel rein geschaut? Dann wüsstest du, warum so ein Modell nicht dafür geeignet ist einfach zu rechnen.
Hier und tschüss