invalid suffix "F" on integer constant

hi,

also ich benutze devc++ und habe hier das Buch "C++ Objektorientiertes Programmieren von Anfang an" von Helmut Erlenkoetter.
Es geht um Flaechenberechnungen von Kreisen, der Radius befindet sich in der Variable "radius"

In dem Buch steht jetzt die Berechnung der Fläche folgendermaßen:

radius*radius*3.141593F

beim kompilieren bekomme ich dann folgenden Fehler:
invalid suffix "F" on integer constant

Lasse ich das "F" nach pi weg kompiliert ers zwar, die Berechnung wird aber falsch (Also falsches Ergebnis). Aber warum? Was will der Autor mit dem F? Und wie wirds richtig? Gibts eigentlich nicht irgendwie eine fest vordefinierte Konstante für pi? Oder muss ichs jedesmal von Hand eintippen, je nachdem wie viele Stellen ich brauche?

Vielen Dank schonmal!

Domz
 
ich würde PI einfach so weit wie möglich definieren:

Code:
#define PI 3.14259265358979

bin aber kein anwendungsentwickler.
 
Hallo,
wie sieht der rest des Codes aus? Wodrin willst du das Ergebnis speichern? Was für ein Typ hat 'radius'?
 
float Kreis::berechneFlaeche() const {
return (radius*radius)*3,141593F;

wird also nicht gespeichert sondern zurück gegeben.

radius is auch float.
 
wieso setzt du denn überhaupt ein "F" dahinter? c++ erkennt auch so, dass das ein float ist.
Außerdem ist "3,14159" keine zahl in c++. Das dezimaltrennzeichen in den meisten Programmiersprachen ist ein punkt, deshlb muss es heißen: "3.14159"
 
ja wie gesagt, in dem Buch steht das F. Wenn ich es weglasse kompiliert ers zwar, berechnets aber falsch.
mit f hab ichs auch schon probiert.

Also versteh ich dich richtig und das f sagt dem kompiler dass die Zahl ein float ist?
Aber warum gibt er mir dann einen Fehler, wenn es bestenfalls überflissig ist?
Und wann ist es nötig?

Das mit dem Komma könnt natürlich ein Grund dafür sein, dass ers falsch berechnet. Habs ausprobiert und es war tatsächlich der Grund! Danke schonmal dafür.
 
das Komma in C++ steht für den Komma-operator. 3,14159 in deinem fall ist ein gültiger ausdruck (mit dem komma-operator), dieser bewirkt, dass der wert dieses ausdruck nur das letzte element ist, nämlich "14159". Statt mit "3.14159" wurde also mit "14159" gerechnet, und das ist etwas größer :D
 
Hi,

Mal zu dem F.
Wie schon richtig gesagt weist du den Compiler dadurch darauf hin, dass er die angegebene Zahl als float zu interpretieren hat.
Ohne den F wird sie unter C,C# etc. als double interpretiert, also denk ich mal wird es in C++ auch so sein.

Das F benötigst du in diesem Fall nicht.
Ein Bsp wo du es jedoch sehrwohl brauchst:
100/33 = 3
100F/33 = 3.333333

Ohne F würde das Ergbniss vom Typ Integer sein => Nachkommerstellen werden abgeschnitten.

Mfg Binäru$
 
Zurück
Oben