Λειτουργικά συστήματα

Γνώση Υπολογιστών >> Λειτουργικά συστήματα >  >> Unix

Ποιο είναι το μέγεθος κάθε τύπων δεδομένων σε πλατφόρμα Bytes DOS και UNIX;

Τα μεγέθη των τύπων δεδομένων σε DOS και UNIX (με μεγαλύτερη ακρίβεια συστήματα συμβατά με το POSIX όπως το Linux, το MacOS, το BSD κ.λπ.) μπορούν να ποικίλουν ελαφρώς ανάλογα με τον μεταγλωττιστή και την ειδική αρχιτεκτονική συστήματος (π.χ. 32-bit έναντι 64-bit). Ωστόσο, υπάρχουν γενικά αποδεκτά πρότυπα και κοινά μεγέθη. Είναι σημαντικό να θυμάστε ότι αυτό δεν είναι * εγγυημένο και θα πρέπει πάντα να συμβουλευτείτε την τεκμηρίωση του μεταγλωττιστή σας για οριστικά μεγέθη.

Κοινά μεγέθη τύπου δεδομένων (κατά προσέγγιση):

| Τύπος δεδομένων | DOS (τυπικά 16-bit) Unix (τυπικά 32-bit ή 64-bit) | Σημειώσεις |

| ---------------------------------------------------------------------------------------------------------------------------------------------------

| `char` | 1 byte | 1 byte | Συνήθως υπογεγραμμένο, αλλά μπορεί να μην είναι υπογεγραμμένο. |

| `unsigned char` | 1 byte | 1 byte | |

| `short` | 2 bytes | 2 bytes (συνήθως) | Συχνά «σύντομο int» |

| `unsigned short` | 2 bytes | 2 bytes (συνήθως) | |

| `int` | 2 bytes | 4 bytes (σε 32-bit), 4 ή 8 bytes (σε 64-bit) | Το μέγεθος εξαρτάται σε μεγάλο βαθμό από την αρχιτεκτονική. |

| `unsigned int` | 2 bytes | 4 bytes (σε 32-bit), 4 ή 8 bytes (σε 64-bit) | Το μέγεθος εξαρτάται σε μεγάλο βαθμό από την αρχιτεκτονική. |

| `long` | 4 bytes | 4 bytes (σε 32-bit), 8 bytes (σε 64-bit) | Το μέγεθος εξαρτάται σε μεγάλο βαθμό από την αρχιτεκτονική. |

| `unsigned long` | 4 bytes | 4 bytes (σε 32-bit), 8 bytes (σε 64-bit) | Το μέγεθος εξαρτάται σε μεγάλο βαθμό από την αρχιτεκτονική. |

| «Long Long» | Όχι πρότυπο | 8 bytes | C99 και αργότερα πρότυπα. |

| `unsigned long '| Όχι πρότυπο | 8 bytes | C99 και αργότερα πρότυπα. |

| `float` | 4 bytes | 4 bytes | Μονής ακρίβειας κυμαινόμενου σημείου. |

| `Double` | 4 bytes ή 8 bytes | 8 bytes | Διπλή ακρίβεια. |

| `Long Double` | 8 bytes (συχνά) | 8 bytes ή 16 bytes | Η παρατεταμένη ακρίβεια κυμαινόμενου σημείου (το μέγεθος ποικίλλει). |

| `δείκτης '| 2 bytes | 4 bytes (32-bit), 8 bytes (64-bit) | Το μέγεθος εξαρτάται από την αρχιτεκτονική. |

Σημαντικές εκτιμήσεις:

* Παραλλαγές DOS: Τα μεγέθη "DOS" είναι γενικεύσεις. Διαφορετικοί μεταγλωττιστές DOS και ακόμη και διαφορετικά μοντέλα μνήμης (όπως μικρά, μεσαία, συμπαγή, μεγάλα, τεράστια) θα μπορούσαν να επηρεάσουν το μέγεθος των τύπων δεδομένων. Το DOS ήταν σε μεγάλο βαθμό ένα λειτουργικό σύστημα 16-bit, με αποτέλεσμα τα μικρότερα μεγέθη.

* Παραλλαγές UNIX/POSIX: Ενώ τα συστήματα που μοιάζουν με UNIX τείνουν να είναι πιο συνεπή, τα μεγέθη `int` και 'μακρά' μπορεί να ποικίλουν ανάλογα με την αρχιτεκτονική του συστήματος (32-bit έναντι 64-bit). Οι τυποποιημένες εντολές * ελάχιστα * μεγέθη, όχι ακριβή μεγέθη. Χρησιμοποιώντας το `stdint.h` (C99 και αργότερα) παρέχει τύπους ακέραιου πλάτους σταθερού πλάτους (` `ut32_t`,` int64_t` κ.λπ.) για καλύτερη φορητότητα.

* Επιρροή του μεταγλωττιστή: Ο μεταγλωττιστής που χρησιμοποιείτε (GCC, Clang, Visual C ++) μπορεί να έχει λεπτές επιπτώσεις στα μεγέθη τύπου δεδομένων. Πάντα να ελέγχετε την τεκμηρίωση του μεταγλωττιστή σας ή να χρησιμοποιήσετε το `sizeof ()` για να προσδιορίσετε το ακριβές μέγεθος στο συγκεκριμένο σύστημα και τον μεταγλωττιστή σας.

* `sizeof ()` χειριστής: Για να αποκτήσετε το ακριβές μέγεθος ενός τύπου δεδομένων σε bytes στο * σύστημα * σας, χρησιμοποιήστε το `sizeof ()` operator στο c/c ++. Για παράδειγμα:`sizeof (int)`, `sizeof (μακρύ)`, κλπ. Αυτή είναι η πιο αξιόπιστη μέθοδος.

Συνοπτικά, ενώ ο πίνακας προσφέρει κοινά μεγέθη, τα πραγματικά μεγέθη εξαρτώνται από τον μεταγλωττιστή και την πλατφόρμα. Πάντα να επαληθεύετε τη χρήση `sizeof ()` για ακριβείς πληροφορίες σχετικά με την πλατφόρμα.

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα