Wo liegt hier der Fehler??? In den Funktionsaufrufen
-
Snake schrieb:
Was für einen Topic würdest du den hierfür wählen?
zB
Makro und Funktionsaufruf - Syntaxfehlerdenk mal nach:
END_WERT wird durch 100; ersetzt und jetzt schau dir an was dann
berechneSumme(START_WERT, END_WERT);
für den Compiler darstellt.
-
Ihr drückt das sehr kompliziert aus, dass er die Semikolons hinter den #defines weglassen soll
-
Bashar schrieb:
Ihr drückt das sehr kompliziert aus, dass er die Semikolons hinter den #defines weglassen soll
Shitt
, ich wusst doch das es ein einfaches Problem war.
Tja dsa war das Ergebnis wenn man zu spät abends noch was programmiert, man sieht den Wald vor lauter Bäumen nicht mehr.
-
Also,
ich hab es jetzt immerhin so, dass ich weiterarbeiten kann.
1. Waren die ; bei define falsch
2. Musste ich START_WERT und GRENZWERT umbennen da ich sonst eine Makroneudefinition bekommen hätteSo nun sind die Fehler wech und ich kann weiter machen.
Vielen Dank für die Denkanstöße
-
Ok ich hät da nochmal was wo ich nen Anstoß bräuchte.
#define TERM 1/n double berechneGliedwert (int n) { double ergebnis; ergebnis = TERM; return ergebnis; }
Mein Problem ist, dass wenn ich n in der Funktion an TERM übergebe nichts gerechnet wird.
Wäre n=2 müsste ja 0.5 in ergebnis gespeichert werden, was aber nicht der Fall ist.Schreibe ich aber in der #define TERM 1*n, funktioniert die rechnerei ohne Probleme.
Wäre n=2 hier gegeben, kommt in ergebnis auch 2 raus.so und nu???
-
int/int ist int
1/2 ist (theoretisch int(0.5)) 0du meinst sicher
1.0/2aber achtung: das Makro TERM ist blöd, da es nur dann verwendbar ist, wenn es eine variable n gibt.
wie wäre es mit
#define Term(n) 1.0/(n)wobei man statt term noch einen besseren Namen finden sollte.
-
HI,
Danke für die Hilfe so gehts besser. Sowas in der Art hab ich mir gedacht hab nur ".0" an der falschen Zahl gesetzt.
-
@shade
Müsste nicht der Teiler eine Gleitkommazahl sein, um eine Gleitkommazahl rauszukriegen egal welchen Typ die Zahl hat durch die geteilt wird?
-
AJ schrieb:
@shade
Müsste nicht der Teiler eine Gleitkommazahl sein, um eine Gleitkommazahl rauszukriegen egal welchen Typ die Zahl hat durch die geteilt wird?ne, es wird immer der 'größere' Typ als Zieltyp genommen.
-
Hmmm komisch. Ich hab irgendwo mal gelesen, dass immer der Datentyp des Teilers genommen wird. Vielleicht wars auch in einer anderen Programmiersprache
Aber für C(++) merk ich mir das mal, dass immer der größere Typ verwendet wird. (Man lernt nie aus :))