Warnung abschalten
-
Ich habe hier einen Code, das eine Warnung produziert (Conversion-Warnung) - wie kann ich die bei GCC abschalten?
#include <iostream.h>
#include <stdlib.h>int main()
{
float f=3.14;
int x=f;
cout<<f<<endl;
system("PAUSE");
return 0;
}
-
int x = (int)f;
[ Dieser Beitrag wurde am 08.05.2003 um 22:39 Uhr von DrGreenthumb editiert. ]
-
Wenn Du C++ verwendest, kannst Du das auch so schreiben:
x = int(f);
Das liest sich IMO schöner....
-
ich meinte natürlich commandline-parameter und nicht sowas
leider finde ich keinen richtigen...
-
Original erstellt von <gogo>:
**Ich habe hier einen Code, das eine Warnung produziert (Conversion-Warnung) - wie kann ich die bei GCC abschalten?#include <iostream.h>
#include <stdlib.h>int main()
{
float f=3.14;
int x=f;
cout<<f<<endl;
system("PAUSE");
return 0;
}**a) dein Quellcode:
Dein GCC C++ Compiler sollte hier nicht nur Warnungen ausspucken, sondern auch gleich das Kompilieren verweigern. Das ist weder C noch C++.#include <iostream> #include <cstdlib> int main() { float f = 3.14; int x = static_cast<int>(f); std::cout << f << std::endl; system("pause"); /* aha, ein MS-DOS/Windows Programmierer ? */ return 0; }
b) Warnungen deines Compilers sollen dich auf eventuelle Programmierfehler aufmerksam machen. Diese Warnungen solltest du nicht ignorieren oder abschalten, sondern eher das Problem beheben.
In deinem speziellen Fall tritt an der Stelle ein Datenverlust auf, da du eine Float in einen Integer konvertierst und somit alle Informationen über die Nachkommastellen verlierst.
-
Nein nicht DOS-Programmierer, sondern Konsolenprogrammierer - und ich muss so eine pause einbauen, sonst wird es sofort beendet. DEV C++ macht das automatisch bei neuem source...
Der obere code wird kompiliert und ausgeführt - jedoch steht diese warnung... Mir ist schon klar, dass da datenverlust entsteht - ich nehme das aber in kauf.
Es entstehen sowieso _immer_ Konvertierungsfehler - diese werden aber z.B. hier nicht angezeigt:
#include <iostream.h>
#include <stdlib.h>int main()
{
long long l=10000000000LL;
int x=l; //10 Mrd=overflow
cout<<l<<endl;
cout<<x<<endl;
system("PAUSE");
return 0;
}Was nützt es mir, wenn floatfehler angezeigt und diese fehler nicht angezeigt werden - ich will auch float abschalten und fehler in kauf nehmen...
-
Nimm doch mal static_cast<TYP>(VARIABLE) um deinen Float in einen Int zu konvertieren.
Das sollte dann auch die Warnung entfernen.Dann verwende mal die C++ Header "iostream" und "cstdlib" statt der deprecated "iostream.h" und "stdlib.h" Header. Dann noch ein "using namespace std;" bzw. vor jeden cout Befehl ein std:: geschrieben und gut ist.