wie entstehen diese Ausgaben
-
Hallo!
Wir sind gerade dabei einer Musterklausur in Info durchzuarbeiten. Dabei werden auch Quellcodes abgefragt. Hier darunter ist solch ein Prachtexemplar. Diese sind aber manchmal so verworren das ich schwierigkeiten habe da durchzusteigen weil ich nie so programmieren würde.
Meine Frage zu dem unteren Code ist.
Wie kommt man auf die 60 und dann wieder auf 14. a wird doch wieder mit 8 initilaisiert a+b-->8+6=14 ok! Aber wieso dann eben oben 60. Und wieso wird es dann außerhalb in der Klammer dann 126. 46 und 52 ist mir klar.
Bitte helft mir diesen Quellcode zu verstehenGruß niesel
#include<iostream.h> int a=20,b=30; int f1(int p, int b) { return a=a+p+b; } int f2(int a, int b) { return a=a+b; } void main() { int b=6; cout << f1(a,b) <<"\n"; //Ausgabe = 46 cout << f2(a,b) <<"\n"; //Ausgabe = 52 { int a=8; cout << f1(a,b) <<"\n"; //Ausgabe = 60 cout << f2(a,b) <<"\n"; //Ausgabe = 14 } cout << f1(a,b) <<"\n";//Ausgabe = 126 }
-
#include <iostream> short a_global = 20; short b_global = 30; short f1(short p_param, short b_param) { return (a_global += p_param + b_param); } short f2(short a_param, short b_param) { return (a_param += b_param); } int main() { short b_local = 6; std::cout << f1(a_global, b_local) << std::endl; // 20 += 20 + 6 => 46 == a_global std::cout << f2(a_global, b_local) << std::endl; // a_global == 46 ... Rückgabe = (a_global[46] + b_local[6]) { short a_local = 8; std::cout << f1(a_local, b_local) << std::endl; // 46 + 8 + 6 // Ausgabe sollte wohl eigentlich 66 sein ... std::cout << f2(a_local, b_local) << std::endl; // 8 + 6 == 14 } std::cout << f1(a_global, b_local) << std::endl; // 60 + 60 + 6 sollte das eigentlich sein ... = 126 return 0; }So ... dein Lehrer sollte sich mal angucken was der fürn Müll programmiert hat ... sein Code ist kein Standard C++ ...
Hmmm warum das so ist? Weil dein Wert der Übergebenen Variablen bei f2 gleich bleibt ... musst schon Pointer oder Referenzen nehmen damit sich da was ändert
