Vor longnicht allzu langer Zeit hat mir jemand gesagt, dass es auf 64-Bit-Computern keine 64-Bit-Computer gibt, die ich immer verwenden sollte int. Das ergab für mich keinen Sinn. Ich habe gesehen, dass Dokumente (wie die auf Apples offizieller Website) sagen, dass sie longbeim Kompilieren für eine 64-Bit-CPU tatsächlich 64 Bit sind. Ich habe nachgeschlagen, was es unter 64-Bit-Windows war, und festgestellt
- Windows:
longundintbleiben 32 Bit lang, und spezielle neue Datentypen werden für 64-Bit-Ganzzahlen definiert.
(von http://www.intel.com/cd/ids/developer/asmo-na/eng/197664.htm?page=2 )
Was soll ich verwenden? Soll ich so etwas wie definieren uw, sw((un) unterzeichnet Breite) als longwenn sie nicht auf Windows, und ansonsten eine Überprüfung der Ziel - CPU Bitbreite tun?
sizeof(long) == 8sogar unter Windows :-)
size_toder einen Iteratortyp, um zu iterieren, nicht intoderint64_t
size_tes in der Nähe von negativen Zahlen schwierig wird, weil size_tes nicht signiert ist. Also for(size_t i=0; i<v.size()-2; i++)schlägt für Vektorgröße 0 und 1 fehl. Ein weiteres Beispiel : for(size_t i=v.size()-1; i>=0; i--).
size_tWerten, sollte das Ergebnis in einer Variablen vom ptrdiff_tTyp