Ich verwende einen int
Typ, um einen Wert zu speichern. Aufgrund der Semantik des Programms variiert der Wert immer in einem sehr kleinen Bereich (0 - 36) und wird int
(nicht a char
) nur wegen der CPU-Effizienz verwendet.
Es scheint, dass viele spezielle arithmetische Optimierungen für einen so kleinen Bereich von ganzen Zahlen durchgeführt werden können. Viele Funktionsaufrufe für diese Ganzzahlen können in kleinen "magischen" Operationen optimiert werden, und einige Funktionen können sogar in Tabellensuchen optimiert werden.
Kann man dem Compiler also mitteilen, dass dies int
immer in diesem kleinen Bereich liegt, und kann der Compiler diese Optimierungen vornehmen?
unsigned
Typen haben, da diese für den Compiler einfacher zu verstehen sind.
var value: 0..36;
.
int
und unsigned int
muss auf den meisten Systemen mit 64-Bit-Zeigern auch von 32 auf 64-Bit vorzeichen- oder null-erweitert werden. Beachten Sie, dass auf x86-64 Operationen an 32-Bit-Registern kostenlos auf 64-Bit null erweitert werden (keine Vorzeichenerweiterung, aber ein vorzeichenbehafteter Überlauf ist ein undefiniertes Verhalten, sodass der Compiler nur 64-Bit-vorzeichenbehaftete Mathematik verwenden kann, wenn er dies wünscht). Sie sehen also nur zusätzliche Anweisungen zum Null-Erweitern von 32-Bit-Funktionsargumenten, keine Berechnungsergebnisse. Sie würden für engere vorzeichenlose Typen.