Ein alter C-Versuch *lol*

Kimble

Erfahrenes Mitglied
warum machst du dir's so schwer, schreib unter der #include Anweisung:
Code:
using namespace std;
dann steht nich über all std::x da!
 

Xeragon

Erfahrenes Mitglied
Das wird zwar teilweise gemacht, eliminiert aber wieder den Sinn von namespaces, deswegen sollte man es besser nicht machen.
Wenn man schon using verwendet, dann beser z.b. using std::cout, um nur cout in den globalen namespace zu holen.
 

sven_raven

Gesperrt
aber ich würde ja statt #define MAX_PRIME 25000 lieber const unsigned short MAX_PRIME = 25000 benutzen. damit das nicht vom Präprozessor einfach ausgetauscht wird sondern vom compiler auch überprüft ^^
*mit gerade gelerntem klugscheiss* :)
 

Xeragon

Erfahrenes Mitglied
Hmm, ja obwohl das bei so einem Programm nichts ausmacht, is es besser den Präprozessor zu vermeiden. Wenn du aber schon auf so was bestehst, dann musst du auch den Generator schon in eine (od. mehrere) Klassen packen, um schon OO zu bleiben ;-)

Abgesehen davon ist sowohl von short als auch von unsigned nur dringenst abzuraten -> nimm int
 
Zuletzt bearbeitet:

sven_raven

Gesperrt
wat wieso?
es handelt sich doch dabei um eine konstante!
Diese kann nur den ihr einmal zugewiesenen Wert haben! Und da die Zahl positiv is -> unsigned!
Und weil die Zahl 25000 in den Bereich eines Short Int fällt nehme ich auch short dafür! Denn short belegt nur 2 Bits.
Int is von compiler zu compiler unterschiedlich! Manchma reserviert der 2 Bits und manchma 4...
Darum würde ich lieber zwischen short (int) und long (int) differzieren anstatt nur int zu schreiben! :)

Aso und bei klassen bin ich noch nicht... von OOP hab ich noch =0= plan :p
 

Xeragon

Erfahrenes Mitglied
Original geschrieben von |®/\vEñ|
wat wieso?
es handelt sich doch dabei um eine konstante!
Diese kann nur den ihr einmal zugewiesenen Wert haben! Und da die Zahl positiv is -> unsigned!
Und weil die Zahl 25000 in den Bereich eines Short Int fällt nehme ich auch short dafür! Denn short belegt nur 2 Bits.!
short belegt zwar nur zwei Bytes, doch int(32) ist normalerweise auf 32-Bit Architekturen schneller. Abgesehen davon schreibt der Standard vor, dass immer mit int gerechnet wird -> es erfolgt stets eine implizite Standardkonvertierung.
Wegen unsigned: Wenn man unsigned verwenden muss um das letze Bit herauszuquetschen, ist das normalerweise ein Indiz dafür, das der gewählte Typ zu klein ist. Außerdem kann es aufgrund von impliziten Standardkonvertierungen zu Fehlern kommen, die schwer zu finden sind z.b.:
Code:
unsigned i=23343;
int j=-123;

i+=j; // Ergebnis ist doch eigentlich positiv, aber -> siehe unten
Eigentlich sollte der Ausdruck keine Probleme bereiten oder? ABER: j wird implizit als unsigned interpretiert und das Ergebnis ist vollkommen falsch

Original geschrieben von |®/\vEñ|
Int is von compiler zu compiler unterschiedlich! Manchma reserviert der 2 Bits und manchma 4...
Darum würde ich lieber zwischen short (int) und long (int) differzieren anstatt nur int zu schreiben! :)
Wenn du noch auf einer 16-Bit Plattform arbeitest... Gott steh dir bei. Inzwischen kann man ruhigen Gewissens annehmen, dass jeder mit zumindest 32-Bit arbeitet. Abgesehen davon würde der 16-Bit int ja wie schon gesagt auf diesen Plattformen ausreichen und wiederrum eine implizite Konvertierung verhindern, die bei long passieren würde.
Original geschrieben von |®/\vEñ|

Aso und bei klassen bin ich noch nicht... von OOP hab ich noch =0= plan :p
Hehe

BTW: Das Quoting auf dem Board ist grauenhaft.
 

sven_raven

Gesperrt
hmm also ich kann ja nur dass schreiben was ich gelesen habe... und gelesen habe ich dass man nie int nehmen soll sondern immer short oder long
 

Thomas Kuse

Erfahrenes Mitglied
mhhh wegen geschwindigkeit?? also bitte so schnell reizt du c++ ja nich aus, ausservielleicht beim sortieren eines mega-arrays mit bubblesort :eek: