Frage zu Variablen
-
float c; int main () { printf("Hallo"); { float a,b; scanf("%f",&a); scanf("%f",&b); float c=a+b; } { printf("%f",c); } }hier komt bei der ausgabe von c 0 und ich will das dort a+b erscheint
-
The_T schrieb:
float c; int main () { printf("Hallo"); { float a,b; scanf("%f",&a); scanf("%f",&b); float c=a+b; } { printf("%f",c); } }hier komt bei der ausgabe von c 0 und ich will das dort a+b erscheint
Weil das c, in dem das Ergebnis der Addition "a + b" gespeichert ist ein anderes ist als das welches du global definiert hast.
Beschäftige dich mit Gültigkeitsbereich von Variablen.
-
ich hab auch bemerkt das das nur in dem Bereich gilt doch gibt es eine möglichkeit das die Variable in beiden Bereichen den selben wert hat ohne sie zusammen zu fassen.
-
The_T schrieb:
ich hab auch bemerkt das das nur in dem Bereich gilt doch gibt es eine möglichkeit das die Variable in beiden Bereichen den selben wert hat ohne sie zusammen zu fassen.
Es ist nicht "die Variable", das sind deren 2!
Die eine ist global sichtbar, die andere nur in diesem Block:{ float a,b; scanf("%f",&a); scanf("%f",&b); float c=a+b; }Beachte deine geschweiften Klammern, diese markieren den Block. Das "float c" am Ende deklariert eine neue Variable vom Typ float mit Namen "c". Es ist zwar der gleiche Name, aber eben eine andere Variable.
Wenn du das float weglässt, also nur noch "c = a+b;" in der Zeile steht, gibt es in deinem Programm nur noch ein "float c", nämlich das globale, und alles funktioniert so wie du es haben willst.
-
Vielen Dank ich weiß ich kan meine Fragen oft schlecht formulieren
so funktioniert es!
-
noch ein gut gemeinter hinweis: Goto=NoGo also bitte nicht verwenden sondern stattdessen schleifen benutzen. danke

-
Nichts gegen goto.

-
gehenichtüberlos schrieb:
Nichts gegen goto.

Doch,
gotokann nichts. Besser gleich Sprachen mit COMEFROM nutzen.
-
fals jemand langeweile hat wie kanurzt man schleifen um goto zu umgehen ^^(ich programiere seit ca 5h also was will ich machen ich nehm halt das 1. was ich seh und funktioniert ^^)
-
Anstatt:
loop: //... if ( Bedingung ) goto loop;machst du:
while ( Bedingung ) { //... }