GELÖST c++ script gibt mir unerklärliche Warnungen aus

Diskutiere c++ script gibt mir unerklärliche Warnungen aus im Programmierung Forum im Bereich Software Forum; Hallo, Ich habe vor ein Paar Tagen angefangen mir c++ anzuschauen, also weiß ich noch nicht wirklich viel darüber.... Ich habe ein kleines Script...
L

Luddi

Threadstarter
Mitglied seit
07.10.2008
Beiträge
51
Alter
26
Standort
NRW
Hallo,
Ich habe vor ein Paar Tagen angefangen mir c++ anzuschauen, also weiß ich noch nicht wirklich viel darüber....

Ich habe ein kleines Script geschrieben, das eine Division ausführen soll und das einmal mit Kommas, also long double ausgibt
und einmal als integer zusammen mit dem Rest.
_____________________________________________________________
#include <iostream>
using namespace std;

long double Divide(long double, long double);
int DivideInt(int, int);
int Rest(int, int);

int main()
{

long double d1, d2;
cout<<"Bitte erst Dividend und dann Divisor eingeben\n";
cin>>d1;
cin>>d2;

cout<<"Das Ergebnis von "<<d1<<" / "<<d2<<" ist "<<Divide(d1,d2)<<"\n";
cout<<"Bei Ganzzahlen ist das Ergebnis "<<DivideInt(d1,d2)
<<" und Rest = "<<Rest(d1,d2)"\n\n";
cin.get();
}

long double Divide(long double Divident, long double Divisor)
{
return Divident/Divisor;
}

int DivideInt(int Divident, int Divisor)
{
return Divident/Divisor;
}

int Rest(int Divident, int Divisor)
{
return Divident%Divisor;
}
___________________________________________________________

Wenn ich dieses Script nun kompilieren lasse bekomme ich folgende Warnungen

In function `int main()':
[Warning] passing `long double' for converting 1 of `int DivideInt(int, int)'
[Warning] passing `long double' for converting 1 of `int Rest(int, int)'
[Warning] passing `long double' for converting 2 of `int Rest(int, int)'
`;' before string constant

Ich hab auch ähnliche Warnungen erhalten, als ich vorher die long double zu int casten lassen wollte.
Woran mag das nun liegen und könnt ihr mir vllt weiterhelfen?
Auch wenn es nur ein banaler Fehler ist, bitte denkt dasran, dass ich noch noob bin;)
THX schonmal:up
 
Peter Schirmer

Peter Schirmer

Dienstleister / Moderator
Mitglied seit
14.04.2006
Beiträge
7.060
Alter
39
Standort
7th Avenue, Ecke XP und Vista, 8ter Stock, Wohnung
Warum nutzt du nicht jeweils den Datentyp int? Dann ist beides gleichgerichtet und sollte funktionieren. Wenn nicht woanders Fehler sind. :D
 
DiableNoir

DiableNoir

Mitglied seit
18.01.2004
Beiträge
6.069
@Luddi:

C++ Ist keine Scriptsprache. ;)

Die Warnungen sollen dich darauf hinweisen, dass du Flieskommazahlen implizit in Ganzzahlen umwandelst. Dadurch verliert das Ergebnis verständlicherweise stark an Genauigkeit.
 
L

Luddi

Threadstarter
Mitglied seit
07.10.2008
Beiträge
51
Alter
26
Standort
NRW
Danke für die Antworten..

@Peter
Ich möchte ja zum einen Fließkommazahlen ausgeben lassen und zum anderen als Ganzzahlen zusammen mit dem Rest

Gibt es vllt eine Möglichkeit dem compiler mitzuteilen, dass die Fließkommazahlen als Ganzzahlen behandelt werden dürfen?
Oder besser nach der Ausgabe der Fließkommazahl die Variablen zu casten und das ohne weitere Fehlermeldungen?

@ DiableNoir
btw: Wie bezeichnet man denn den c++ code? und wo liegt der Unterschied zwischen dem und einem script?
 
DiableNoir

DiableNoir

Mitglied seit
18.01.2004
Beiträge
6.069
@Luddi:

Ich bin mir jetzt gerade nicht sicher, aber ich denke dass der Compiler dir immer eine Warnung liefern wird. Es ist ja nur ein Hinweis für dich, dass in dieser Situation was schiefgehen könnte, aber nicht muss. ;)

Es ist ja so, das du zwar durch das explizite Casten der Variablen die Warnung wegblenden kannst, aber dann erscheint die Warnung für die Casting-Anweisung, weil du versuchst einen Datentyp mit einem größeren Wertebereich in einen kleinen zu konvertieren. Der Compiler kann an dieser Stelle nicht ermitteln, ob die Werte die dein Programm erzeugt, auch immer in die Zielvariable passen wird.

Was deine Script-Frage betrifft: Scripts sind Textdateien die von einem Interpreter Zeile für Zeile interpretiert und ausgeführt werden. C++-Quellcodedateien lassen sich nicht direkt ausführen sondern müssen erst in Maschinencode kompiliert und verlinkt werden um daraus ausführbaren Code zu erzeugen. (Sie laufen dann auch direkt auf der CPU und nicht im Adressraum eines Interpreters.)
 
L

Luddi

Threadstarter
Mitglied seit
07.10.2008
Beiträge
51
Alter
26
Standort
NRW
THX DiableNoir für die Erklärung

nun ist es aber so,
dass der Compiler bei der Warnung aufhört zu kompilieren
Vllt ist die Frage ein wenig zu allgemein aber was gäbe es da für Alternativen?


________________________________________________________
#edit:

Also, ich hab gerade gemerkt, dass der dann bei den Warnungen doch weiterkompiliert.
Es lag an ...
`;' before string constant
Ich hab den quellcode dann so umgeschrieben:

....
int main()
{

long double d1, d2;
cout<<"Bitte erst Dividend und dann Divisor eingeben\n";
cin>>d1;
cin>>d2;

cout<<"Das Ergebnis von "<<d1<<" / "<<d2<<" ist "<<Divide(d1,d2)<<"\n";
cout<<"Bei Ganzzahlen ist das Ergebnis "<<DivideInt(d1,d2)<<" und Rest = "<<Rest(d1,d2);
cout<<"\n\n";
cin.get();
}

....

Also es hat das Problem teilweise gelöst, nur ist mir nicht ganz klar warum, darf man dort nicht so viele Unterbrechungen machen oder ähnliches?
Das Problem ist nun, wenn ich die exe ausführe gibt es eine Fehlermeldung, wenn long double als int behandelt werden soll
Also verweise ich auf meine obige Frage:
"Vllt ist die Frage ein wenig zu allgemein aber was gäbe es da für Alternativen?"
 
Zuletzt bearbeitet:
DiableNoir

DiableNoir

Mitglied seit
18.01.2004
Beiträge
6.069
Nein, das liegt daran, dass dir ein << gefehlt hat:

cout<<"Bei Ganzzahlen ist das Ergebnis "<<DivideInt(d1,d2)<<" und Rest = "<<Rest(d1,d2)<<"\n\n";
Das war der Quell allen Übels, der für die ganze Verwirrung gesorgt hat. ;)
 
L

Luddi

Threadstarter
Mitglied seit
07.10.2008
Beiträge
51
Alter
26
Standort
NRW
Aha...vielen Dank. hat sich damit dann auch erledigt :D
 
Thema:

c++ script gibt mir unerklärliche Warnungen aus

c++ script gibt mir unerklärliche Warnungen aus - Ähnliche Themen

  • Surface Book1: USB-C to Ethernet-Adapter

    Surface Book1: USB-C to Ethernet-Adapter: Hallo, ich besitze ein Surface Book 1.Besteht die Möglichkeit den Adapter Surface Connect to USB-C zu nutzen und zwar nur um einen USB-C auf...
  • Fehlercode 0x80070052 beim Kopieren von JPG Dateien aus Laufwerk C nach externer Festplatte

    Fehlercode 0x80070052 beim Kopieren von JPG Dateien aus Laufwerk C nach externer Festplatte: Beim Kopieren von JPG Dateien aus Laufwerk C nach externer Festplatte auf Laufwerk G bekomme ich diesen Fehlercode 0x80070052
  • Beim Kopieren von JPG Dateien aus Laufwerk C nach externer Festplatte auf Laufwerk G bekomme ich diesen Fehlercode 0x80070052

    Beim Kopieren von JPG Dateien aus Laufwerk C nach externer Festplatte auf Laufwerk G bekomme ich diesen Fehlercode 0x80070052: Beim Kopieren von JPG Dateien aus Laufwerk C nach externer Festplatte auf Laufwerk G bekomme ich diesen Fehlercode 0x80070052
  • Windows Datenträgerbereinigung für ACER (C:)

    Windows Datenträgerbereinigung für ACER (C:): Sehr geehrte Damen und Herren, Kann ich die in der Zeile Windows- Update-Bereinigung ermittelte Datenmenge von 30GB problemlos löschen, ohne...
  • Update LW C: fastr voll, weiteres LW mit über 300 GB Speicher ignoriert

    Update LW C: fastr voll, weiteres LW mit über 300 GB Speicher ignoriert: Ich möchte ein Win 10 Update durchführen. Mein LW C. mit Betriebssystem hat noch ca. 1,5 GB Speicher frei. Es gibt eine weitere Festplatte mit...
  • Ähnliche Themen

    Oben