Hilfe bei einfachem Beispiel ?
-
Hi Leute.
ich muss mal so langsam anfangen mich mit c++ beschäftigen in meinem studium, aber irgentwie macht es oft merkwürdige Sachen.
Bisher hab ich vorallem mit Pascal, assembler oder basic gearbeitet und damit auch durchaus große Programme vollbracht, bin also kein kompletter neuling auf dem gebiet. Allerdings war es bisher mehr hobbymäßig.
wie auch immer, das problem lautet Klassen, was an sich ja kein Problem wäre, aber merkwürdige dinge treten auf.
relativ häufig werden meine variablen die ich verwende innerhalb der klassen auf ziemlich utopische werte gesetzt.
hier mal ein beispiel, hoffe sind keine großen fehler, habs nur schnell geschrieben. Es erhabt keinen anspruch auf sinn.
das problem sind die ergebnisse. Achja geschrieben unter dev-c++ von Borland aber das dürfte ja egal sein.
danke schonmal im Voraus.
#include <iostream> using namespace std; class rechnen { private : int ergebnis; public : int addition(int a,int b); int subtrak(int a,int b); int multi(int a,int b); int divi(int a,int b); }; int rechnen :: addition(int a,int b) {ergebnis = a + b; return ergebnis;} int rechnen :: subtrak(int a,int b) {ergebnis = a - b; return ergebnis;} int rechnen :: multi(int a,int b) {ergebnis = a * b; return ergebnis;} int rechnen :: divi(int a,int b) {ergebnis = a / b; return ergebnis;} int main() { rechnen calc; int wahl=0; int z; int i=999; int j; char egal; while (wahl<5) { for(z =0;z < 25; ++z) {cout<<""<<endl;} cout<<"Bitte Funktion auswaehlen :"<<endl; cout<<"1 : Add"<<endl; cout<<"2 : Sub"<<endl; cout<<"3 : Mul"<<endl; cout<<"4 : Div"<<endl; cout<<"5 : Ende"<<endl; for(z =0;z < 18; ++z) {cout<<""<<endl;} cin>>wahl; if (wahl<5) { for(z =0;z < 25; ++z) {cout<<""<<endl;} cout<<"Argument 1 :"<<endl; for(z =0;z < 23; ++z) {cout<<""<<endl;} cin>>i; for(z =0;z < 25; ++z) {cout<<""<<endl;} cout<<"Argument 2 :"<<endl; for(z =0;z < 23; ++z) {cout<<""<<endl;} cin>>j; for(z =0;z < 25; ++z) {cout<<""<<endl;} cout<<"Ergebnis :"; if (wahl=1) {cout<<calc.addition(i,j);} if (wahl=2) {cout<<calc.subtrak(i,j);} if (wahl=3) {cout<<calc.multi(i,j);} if (wahl=4) {cout<<calc.divi(i,j);} cout<<endl<<"weiter mit beliebiger Eingabe"; for(z =0;z < 23; ++z) {cout<<""<<endl;} cin>>egal; } }; return 0; }
-
Was in Pascal := ist, ist in C++ =
Was in Pascal = ist, ist in C++ ==if (wahl=1) // ist eine Zuweisung, die immer das Ergebnis 1 (true) haben wirdWenn ich z.B. als Argumente 2 und 2 übergebe, ist das Ergebnis völlig korrekt 4041, weil 2+2=4, 2-2=0, 2*2=4 und 2/2=1 sind

-
ah danke.
das mit dem vergleichen/zuweisen wusste ich zwar, aber sowas fällt einem halt nicht auf.

finds nur komisch das es überhaupt erlaubt wird in einer if-abfrage einen solchen ausdruck zu verwenden.
bis bald sag ich mal

-
So etwas geht doch eigentlich in vielen Sprachen. Und hier kann man (wenn man's denn weiss :D) sogar noch optisch unterscheiden. Viel schlimmer finde ich da sowas (VisualBasic):
boolVar = intVar = 10Was nicht etwa bedeutet dass intVar 10 zugewiesen wird, sondern dass in boolVar das Ergebnis des Vergleiches (intVar == 10) steht.
-
C/C++ Code:
boolVar = intVar = 10Was nicht etwa bedeutet dass intVar 10 zugewiesen wird, sondern dass in boolVar das Ergebnis des Vergleiches (intVar == 10) steht.

-
Mein BCB 6 quittiert
if (wahl = 1)mit der Warnung
[C++ Warnung] Main.cpp(<Zeilennummer>): W8060 Möglicherweise inkorrekte Zuweisung
-
Student zu Gast schrieb:
finds nur komisch das es überhaupt erlaubt wird in einer if-abfrage einen solchen ausdruck zu verwenden.
Ich nicht. Hin und wieder machen C++-Programmierer (einschließlich mir) sowas:
bool auswertung; if (auswertung = (1 < 4)) { // irgendwas } // ... viel Code ... // Wie war das Ergebnis der Auswertung oben nochmal? if (auswertung) { // nochmal was }Nur ein Beispiel, viel häufiger kommt es vor, dass man in der
ifeine Funktion aufruft, deren Rückgabewert bei Fehlern 0 sein kann, die dann negiert wird und dieifauslöst. Ansonsten hat man an dieser Stelle z.B. das Ergebnis einer Berechnung etc.