Storleken på datatyper i DOS och UNIX (mer exakt, POSIX-kompatibla system som Linux, MacOS, BSD, etc.) kan variera något beroende på kompilatorn och specifik systemarkitektur (t.ex. 32-bitars mot 64-bitars). Det finns emellertid allmänt accepterade standarder och vanliga storlekar. Det är avgörande att komma ihåg att detta är * inte * garanterat och du bör alltid konsultera din kompilatordokumentation för definitiva storlekar.
Vanliga datatypstorlekar (ungefärliga):
| Datatyp | DOS (vanligtvis 16-bitars) | Unix (vanligtvis 32-bitars eller 64-bitars) | Anteckningar |
| --------------- | ------------------------ | ----------------------------------- | ----------------------------------------------------
| `Char` | 1 byte | 1 byte | Vanligtvis undertecknat, men kan vara osignerad. |
| `Unsigned Char` | 1 byte | 1 byte | |
| `Kort '| 2 byte | 2 byte (vanligtvis) | Ofta `kort int` |
| `Osignerad kort '| 2 byte | 2 byte (vanligtvis) | |
| `Int` | 2 byte | 4 byte (på 32-bitars), 4 eller 8 byte (på 64-bitars) | Storlek beror starkt på arkitekturen. |
| `Unsigned Int` | 2 byte | 4 byte (på 32-bitars), 4 eller 8 byte (på 64-bitars) | Storlek beror starkt på arkitekturen. |
| `Long '| 4 byte | 4 byte (på 32-bitars), 8 byte (på 64-bitars) | Storlek beror starkt på arkitekturen. |
| `Osigned Long '| 4 byte | 4 byte (på 32-bitars), 8 byte (på 64-bitars) | Storlek beror starkt på arkitekturen. |
| `Long Long '| Inte standard | 8 byte | C99 och senare standard. |
| `Osigned Long Long '| Inte standard | 8 byte | C99 och senare standard. |
| `float` | 4 byte | 4 byte | Enkel precision flytande punkt. |
| `dubbel` | 4 byte eller 8 byte | 8 byte | Dubbelprecision flytande punkt. |
| `Long Double '| 8 byte (ofta) | 8 byte eller 16 byte | Utökat precision flytande punkt (storlek varierar). |
| `Pointer '| 2 byte | 4 byte (32-bitars), 8 byte (64-bitars) | Storlek beror på arkitektur. |
Viktiga överväganden:
* dosvariationer: "DOS" -storlekarna är generaliseringar. Olika DOS -kompilatorer och till och med olika minnesmodeller (som små, medelstora, kompakta, stora, enorma) kan påverka storleken på datatyper. DOS var till stor del ett 16-bitars operativsystem, vilket resulterade i mindre storlekar.
* Unix/POSIX -variationer: Medan Unix-liknande system tenderar att vara mer konsekventa, kan "int" och "långa" storlekar variera beroende på systemarkitekturen (32-bitars mot 64-bitars). Standardmandaten * minsta * storlekar, inte exakta storlekar. Med hjälp av `stdint.h` (c99 och senare) tillhandahåller fasta breddstyper (` int32_t`, `int64_t`, etc.) för bättre portabilitet.
* kompilatorpåverkan: Kompilatorn du använder (GCC, Clang, Visual C ++) kan ha subtila effekter på datatypstorlekar. Kontrollera alltid din kompilatordokumentation eller använd `sizeof ()` för att bestämma den exakta storleken på ditt specifika system och kompilator.
* `sizeof ()` operatör: För att få den exakta storleken på en datatyp i byte på * ditt * -system använder du operatören `sizeof ()` i C/C ++. Till exempel:`sizeof (int)`, `sizeof (lång lång)`, etc. Detta är den mest pålitliga metoden.
Sammanfattningsvis, medan tabellen erbjuder vanliga storlekar, är de faktiska storlekarna kompilator- och plattformsberoende. Verifiera alltid att använda `sizeof ()` för korrekt, plattformsspecifik information.