Frage von Soelller, 52

Wieso zeigt mir das Programm dann s = 0 (DEV C++)?

Hallo, siehe Bildmaterial.

Eigentlich müsste das Programm doch s=12 anzeigen!? Es zeigt aber s=0

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von Xenomus, 17

Ich denk mal das Problem besteht darin,dass der Wert von l anfangs ja 0(null) ist und du erst nachdem du s l zuweist l den Wert 12 zuweist,daher 0.

Also du sagst dem Programm s=l während l=0 -> mach das l=13 davor und probiers nochmal.

Kommentar von Soelller ,

Hallo,

Schau mal, mit dieser Schreibweise klappt es ja:

#include <stdio.h>
#include <stdlib.h>

int main()

{

short s;

int i;

long l;

l=12;

i=3;

s=l;

printf("Die Variable s = %d \n", s);

printf("Die Variable i = %d \n", i);

printf("Die Variable l = %d \n", l);

return 0;
}

Warum klappt es dann nicht mit der da oben?

Ich verstehe das nicht. Ich habe doch nur kürzer zusammengefasst. Ich habe statt

short s;
s=l

short s=l;

Das ist doch die gleiche darstellung, nur anders oder ist das nicht so?

Kommentar von Eismensch ,

Es geht um die Reihenfolge!

Im Beispiel im Bild weist du zu:

#1  s = l;
#2  i = 3;
#3  l = 12;

Zum Zeitpunkt #1 ist "l" noch nicht mit dem Wert 12 belegt. Somit wird der Initialwert von l genutzt(scheint hier "0" zu sein).

In deinem 2. Beispiel weist du in dieser Reihenfolge zu:

#1 l = 12;
#2 i = 3;
#3 s = l;

Zum Zeitpunkt #3 ist "l" bereits mit "12" belegt, somit wird s = l = 12!

Antwort
von Robokopf1, 14

Ich sehe da s=l? Oder? Ein Integer kann keine Buchstaben ausgeben, mit char würde das gehen. Quelltext ändern dann müsste es gehen.

Kommentar von Eismensch ,

"s" und "l" sind Variablen, welche weiter oben deklariert wurden. "char" hat hier gar nichts zu suchen ;)

Antwort
von PerfectMuffin, 15

C++-Variablen sind call-by-value.

Du kopierst nicht die Variable sondern nur ihren aktuellen Wert.

Was du machen willst geht mit Pointern oder Referenzen.

Keine passende Antwort gefunden?

Fragen Sie die Community