Kοnstadinos Δημοσ. 9 Σεπτεμβρίου 2010 Δημοσ. 9 Σεπτεμβρίου 2010 Γεια σας, έχω αρχίσει να διαβάζω για προγραμματισμό C++ και έχω κολλίσει στο εξής (επειδή διαβάζω αγγλικά guides) το signed και unsigned integer δεν έχω καταλάβει τι είναι (κατάλαβα το τον όρο του απλού int) char Character or small integer. 1byte signed: -128 to 127 unsigned: 0 to 255 short int (short) Short Integer. 2bytes signed: -32768 to 32767 unsigned: 0 to 65535 Σόρρυ αν είναι πολύ novice η ερώτηση... και όμως είναι.
macabre_sunsets Δημοσ. 9 Σεπτεμβρίου 2010 Δημοσ. 9 Σεπτεμβρίου 2010 Ο signed μπορεί να πάρει αρνητικές τιμές ο unsigned δεν μπορεί. Αλλά και οι δύο τύποι έχουν το ίδιο εύρος τιμών. Πχ/ -128 ως 127 = 255 "θέσεις" -32768 ως 32767 = 65535 "θέσεις"
ktiniatros Δημοσ. 9 Σεπτεμβρίου 2010 Δημοσ. 9 Σεπτεμβρίου 2010 Στη μεταβλητή τύπου unsigned int μπορείς να βάλεις μόνο θετικούς ακέραιους. Η signed int παίρνει και θετικούς ακέραιους και αρνητικούς. Αν πχ δε σ' ενδιαφέρουν οι αρνητικές τιμές σε μια ακέραια μεταβλητή μπορείς να την ορίσεις ως unsigned κι έτσι θα έχεις και διπλάσιες θετικές τιμές διαθέσιμες.
imitheos Δημοσ. 10 Σεπτεμβρίου 2010 Δημοσ. 10 Σεπτεμβρίου 2010 Γεια σας, έχω αρχίσει να διαβάζω για προγραμματισμό C++ και έχω κολλίσει στο εξής (επειδή διαβάζω αγγλικά guides) το signed και unsigned integer δεν έχω καταλάβει τι είναι (κατάλαβα το τον όρο του απλού int) char Character or small integer. 1byte signed: -128 to 127 unsigned: 0 to 255 short int (short) Short Integer. 2bytes signed: -32768 to 32767 unsigned: 0 to 65535 Σόρρυ αν είναι πολύ novice η ερώτηση... και όμως είναι. Όπως ανέφεραν και τα άλλα παιδιά η διάκριση αφορά το πρόσημο. Η μεταβλητή τύπου char καταλαμβάνει μέγεθος 1 byte όπως σωστά αναφέρεις επομένως μπορεί να λάβει 256 τιμές που είναι το μέγεθος 1 byte. Έτσι όταν δηλώσεις μια μεταβλητή unsigned char τότε μπορεί να πάρει τιμές από 0 μέχρι 255. Στην signed περίπτωση το 1 bit χρησιμοποιείται για το πρόσημο έτσι μας μένουν τα υπόλοιπα 7 bits για την τιμή για αυτό υπάρχει η διαφοροποίηση και δέχεται από -128 μέχρι 127. Το ίδιο ισχύει και για το short int με τη διαφορά ότι καταλαμβάνει 2 bytes. 2 Bytes = 2 ^ 16 bits δηλαδή τιμές από 0 μέχρι 65535. Αν θέλουμε πρόσημο, τότε μας μένουν 15 bits οπότε οι δυνατές τιμές είναι από -32768 μέχρι 32767 Επίσης έχε στο νου σου ότι το μέγεθος (άρα και το εύρος) των τύπων εξαρτάται από την αρχιτεκτονική του επεξεργαστή και δεν είναι πάντα ίδιο (εκτός από τον char που καταλαμβάνει πάντα 1 C byte)
Kοnstadinos Δημοσ. 12 Σεπτεμβρίου 2010 Μέλος Δημοσ. 12 Σεπτεμβρίου 2010 Καλήφθηκα πλήρως! Σας ευχαριστώ πολύ!:-)
Giorgos3924 Δημοσ. 12 Σεπτεμβρίου 2010 Δημοσ. 12 Σεπτεμβρίου 2010 Στους 64bit επεξεργαστές που κυκλοφορούν τώρα, ο int καταλαμβάνει 8byte; Ο long και ο short πόσα byte καταλαμβάνουν;
imitheos Δημοσ. 12 Σεπτεμβρίου 2010 Δημοσ. 12 Σεπτεμβρίου 2010 Στους 64bit επεξεργαστές που κυκλοφορούν τώρα, ο int καταλαμβάνει 8byte;Ο long και ο short πόσα byte καταλαμβάνουν; Ο short είναι σχεδόν παντού 16bit. Οι pointers είναι παντού 64bit. Ο int και ο long εξαρτώνται από το προγραμματιστικό μοντέλο που χρησιμοποιεί η αρχιτεκτονική. Οι αρχιτεκτονικές που ακολουθούν το μοντέλο ILP64 έχουν Integer, Long, Pointer με 64bit μέγεθος. Το Linux, τα BSD και τα περισσότερα UNIXοειδή ακολουθούν το LP64 μοντέλο, δηλαδή ο int παραμένει 32bit και μόνο ο long είναι 64bit. Τα Windows ακολουθούν το LLP64 μοντέλο, στο οποίο και ο int και ο long παραμένουν 32bit και μόνο ο long long είναι 64bit.
Evgenios1 Δημοσ. 12 Σεπτεμβρίου 2010 Δημοσ. 12 Σεπτεμβρίου 2010 Οπος λεει και ο απο πανω μου, δεν ειναι σιγουρο. Αν θες κατι σιγουρο c : stdint.h c++: cstdint
Owlman Δημοσ. 13 Σεπτεμβρίου 2010 Δημοσ. 13 Σεπτεμβρίου 2010 Γεια σας, έχω αρχίσει να διαβάζω για προγραμματισμό C++ και έχω κολλίσει στο εξής (επειδή διαβάζω αγγλικά guides) το signed και unsigned integer δεν έχω καταλάβει τι είναι (κατάλαβα το τον όρο του απλού int) char Character or small integer. 1byte signed: -128 to 127 unsigned: 0 to 255 short int (short) Short Integer. 2bytes signed: -32768 to 32767 unsigned: 0 to 65535 Σόρρυ αν είναι πολύ novice η ερώτηση... και όμως είναι. Θα ήθελα να σου δώσω μια φιλική γενική συμβουλή Αν δέν έχεις κάποια βασικη γνώση Software Engineering, και ειδικότερα για την C++ γνώσεις αντικειμενοστραφή προγραμματισμού, μήν πολυκολλάς σε λεπτομέρειες γιατί είναι σίγουρο ότι θα κουραστείς και θα παραιτηθείς.. Αν έχεις πάρει κάποιο βιβλίο και το έχεις ξεκινησει τυφλοσούρτι απο το κεφάλαιο 1 καλύτερα βάλτο στο ράφι για λίγο... Ολα τα βιβλία είναι κακογραμμένα γιατί προυποθέτουν κάποιες γνωσεις και θα σε μπερδέψουν με αναφορές σε άλλα κεφάλαια του βιβλίου και πάει λεγοντας.. Ξεκίνα με απλά tutorial στο ιντερνετ.. και το κυριότερο πάρε έτοιμα προγραμματακια και παίξε μαζι τους.. Πρακτική.. Δοκίμασε να φτιάξεις τα δικά σου μετά κτλ κτλ.. Ξεκινα απο τα ρηχά.. Στην ερώτηση σου τώρα για να καταλάβεις τί εννοώ.. Αυτή είναι η μίνιμουμ κλίμακα τιμων της standard C/C++ που πέρνει o int.. Δέν σημαίνει ότι δέν μπορεί να πάρει μεγαλύτερη τιμή.. Επίσης οταν γράφεις int kai signed int γράφεις το ίδιο πράγμα.. Η διαφορά μεταξύ signed και unsigned εχει να κάνει με το πώς διαβάζεται απο τον interpreter το high order bit (sign flag) του int σου.. Δηλαδη, οταν πάς και του βάζεις signed τότε ο compiler διαβάζει ένα ειδικό bit που η τιμή του 0 ή 1 βαφτίζει τον αριθμό θετικό ή αρνητικό αντίστοιχα.. Παράδειγμα... Ο 16bit integer αριθμός 32,767 εχει ώς εξής 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Το 0 μπροστά μπροστά είναι το φλαγκάκι σου που δείχνει ότι ο αριθμός είναι θετικός.. Αν τώρα θές να πάς πιο βαθιά πρέπει να κοιτάξεις την μέθοδο Two’s Complement Arithmetic.. http://academic.evergreen.edu/projects/biophysics/technotes/program/2s_comp.htm http://www.swarthmore.edu/NatSci/echeeve1/Ref/BinaryMath/BinaryMath.html και για το παράδειγμα ο -32,767 είναι.. 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 με το 1 να δηλώνει το αρνητικό πρόσημο προφανώς...
Gbax13 Δημοσ. 15 Σεπτεμβρίου 2010 Δημοσ. 15 Σεπτεμβρίου 2010 Αν δεν γράψεις τίποτα στον ορισμό της μεταβλητης τότε τι θεωρείται ;
MitsakosGR Δημοσ. 15 Σεπτεμβρίου 2010 Δημοσ. 15 Σεπτεμβρίου 2010 Αν δεν γράψεις τίποτα στον ορισμό της μεταβλητης τότε τι θεωρείται ; Δεν μπορείς στην C/C++ να ορίσεις μεταβλητή χωρίς τύπο. Αναγκαστικά θα την ορίσεις εσύ όπως την θέλεις.
Επισκέπτης Δημοσ. 16 Σεπτεμβρίου 2010 Δημοσ. 16 Σεπτεμβρίου 2010 Εάν εννοείς τι είναι το: >int a; χωρίς να έχει signed ή unsigned modifier μπροστά, τότε είναι signed από default. Αυτό ισχύει και για όλους τους υπόλοιπους "βασικούς" τύπους δεδομένων εκτός του char που μπορεί να είναι είτε signed ή unsigned ανάλογα με το σύστημά σου.
NewProject Δημοσ. 16 Σεπτεμβρίου 2010 Δημοσ. 16 Σεπτεμβρίου 2010 offtopic ενα βιντεακι που πετυχα στο utube που ενας προσπαθουσε να πεισει τους αλλους οτι η JScript δεν ειναι τοσο κακη , αργη κλπ. και ρωτησε αν σε μια γραμμη γραψουν "οκ" θα το παρει ο interpreter η οχι ... και φυσικα ολοι ειπαν οχι ... αυτος : > ok ok; bool ok; bool ok = false; ... wtf ?
GrandGamer Δημοσ. 19 Σεπτεμβρίου 2010 Δημοσ. 19 Σεπτεμβρίου 2010 Οπος λεει και ο απο πανω μου, δεν ειναι σιγουρο. Αν θες κατι σιγουροc : stdint.h c++: cstdint Η μπορεί πιο απλά, για να μην μπλέκει με άλλους τύπους, να κάνει print ένα sizeof(τύπος) και να δεί πόσα byte πιάνει ο συγκεκριμένος τύπος πχ: >printf("%d", sizeof(int));
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.