Ein alter C-Versuch *lol*

warum machst du dir's so schwer, schreib unter der #include Anweisung:
Code:
using namespace std;
dann steht nich über all std::x da!
 
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.
 
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* :-)
 
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:
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
 
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.
 
mhhh wegen geschwindigkeit?? also bitte so schnell reizt du c++ ja nich aus, ausservielleicht beim sortieren eines mega-arrays mit bubblesort :eek:
 
Zurück