Dimensioni del tipo di dati comuni (approssimativo):
| Tipo di dati | Dos (in genere a 16 bit) | UNIX (in genere a 32 bit o 64 bit) | Note |
| --------------- | ------------------------ | --------------------------------------- | ------------------------------------------------ |
| `char` | 1 byte | 1 byte | Di solito firmato, ma può essere non firmato. |
| `senza segno char` | 1 byte | 1 byte | |
| `Short`. 2 byte | 2 byte (di solito) | Spesso `corto int` |
| `Short senza segno" 2 byte | 2 byte (di solito) | |
| `int`. 2 byte | 4 byte (su 32 bit), 4 o 8 byte (su 64 bit) | La dimensione dipende fortemente dall'architettura. |
| `Unsigned int` | 2 byte | 4 byte (su 32 bit), 4 o 8 byte (su 64 bit) | La dimensione dipende fortemente dall'architettura. |
| `long` 4 byte | 4 byte (su 32 bit), 8 byte (su 64 bit) | La dimensione dipende fortemente dall'architettura. |
| `Unsigned Long` | 4 byte | 4 byte (su 32 bit), 8 byte (su 64 bit) | La dimensione dipende fortemente dall'architettura. |
| `long long` Non standard | 8 byte | C99 e standard successivo. |
| `Unsigned Long Long`. Non standard | 8 byte | C99 e standard successivo. |
| `float`. 4 byte | 4 byte | Punto mobile a singola precisione. |
| `Double`. 4 byte o 8 byte | 8 byte | Punto mobile a doppia precisione. |
| `Long Double` 8 byte (spesso) | 8 byte o 16 byte | Punto mobile a precisione estesa (la dimensione varia). |
| `puntatore`. 2 byte | 4 byte (32 bit), 8 byte (64 bit) | La dimensione dipende dall'architettura. |
Considerazioni importanti:
* Variazioni dos: Le dimensioni "DOS" sono generalizzazioni. Diversi compilatori DOS e persino diversi modelli di memoria (come piccoli, medi, compatti, grandi, enormi) potrebbero influenzare la dimensione dei tipi di dati. DOS era in gran parte un sistema operativo a 16 bit, con conseguenti dimensioni più piccole.
* Variazioni unix/posix: Mentre i sistemi simili a Unix tendono ad essere più coerenti, le dimensioni `int` e` lunghe 'possono variare in base all'architettura del sistema (32 bit vs. 64 bit). Le dimensioni minime * standard *, non dimensioni esatte. L'uso di `stdint.h` (C99 e successivo) fornisce tipi interi a larghezza fissa (` int32_t`, `int64_t`, ecc.) Per una migliore portabilità.
* Influenza del compilatore: Il compilatore utilizzato (GCC, Clang, Visual C ++) può avere sottili impatti sulle dimensioni dei tipi di dati. Controlla sempre la documentazione del compilatore o usa `sizeof ()` per determinare la dimensione esatta sul sistema e sul compilatore specifici.
* `sizeof ()` Operatore: Per ottenere la dimensione precisa di un tipo di dati in byte sul sistema * il tuo *, utilizzare l'operatore `sizeof ()` in C/C ++. Ad esempio:`sizeof (int)`, `sizeof (lungo)`, ecc. Questo è il metodo più affidabile.
In sintesi, mentre la tabella offre dimensioni comuni, le dimensioni effettive sono dipendenti dal compilatore e dalla piattaforma. Verifica sempre l'utilizzo di `sizeof ()` per informazioni accurate e specifiche della piattaforma.
sistemi © www.354353.com