Προς το περιεχόμενο

Ευρος τυπων μεταβλητων


panourgias

Προτεινόμενες αναρτήσεις

Δημοσ.

Στη γλώσσα C ποια ειναι τα ευρη των μεταβλητων? Αν σε μια μεταβήτη εκχωρηθει αριθμος εξω απο το εύρος αυτο τι συμβαινει? Ψαχνοντας στο δικτυο ειδα οτι ο τυπος <long int> εχει ευρος σχεδον -4.000.000.000 -> 4.000.000.000 αλλα εγω σε ενα code μου εκχωρω την τιμη 20.000.000.000.000 σε αυτη τη μεταβλητη και την αποθηκευει σωστα. Τι συμβαινει?

Δημοσ.

Το εύρος έχω την εντύπωση ότι καθορίζεται από το υλικό του υπολογιστή, για παράδειγμα στα 16 bit είναι -32.χχχ....+32.χχχ στα 32 αυξάνεται κτλ κτλ.

Δημοσ.
Στη γλώσσα C ποια ειναι τα ευρη των μεταβλητων? Αν σε μια μεταβήτη εκχωρηθει αριθμος εξω απο το εύρος αυτο τι συμβαινει? Ψαχνοντας στο δικτυο ειδα οτι ο τυπος <long int> εχει ευρος σχεδον -4.000.000.000 -> 4.000.000.000 αλλα εγω σε ενα code μου εκχωρω την τιμη 20.000.000.000.000 σε αυτη τη μεταβλητη και την αποθηκευει σωστα. Τι συμβαινει?

 

Όπως είπε και ο Τάσος, εξαρτάται από την αρχιτεκτονική σου.

Οι pointers είναι πάντα όσο το εύρος του επεξεργαστή.

 

Ένα πρόγραμμα που γινόταν compile με turboc σε DOS στα 16bit είχε integers

με εύρος 15bit για αυτό και έπαιρνε τιμές από -32768 μέχρι 32767. Αν δεν

χρησιμοποιούσαμε πρόσημο τότε είχε εύρος 16bit και έπαιρνε τιμές από 0 μέχρι 65536.

 

Στα 32bit έχουμε integer που έχουν εύρος 32bit (31 αν λάβεις υπόψην το πρόσημο).

Αν έχεις ένα 64bitο επεξεργαστή και τρέχεις 64bitο λειτουργικό, τότε οι pointers

θα είναι 64bit. Το εύρος του integer εξαρτάται από το προγραμματιστικό μοντέλο.

Σε Windows και Linux είναι και πάλι 32bit. Ο long έχει εύρος 64bit σε Linux και

νομίζω ότι έχει 32bit σε Windows.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...