Jump to content

Απορία για τη C


Arxontoula
 Share

Recommended Posts

Το πρωτο δεν πιανει χωρο στην μνημη γιατι ο compiler αλλαζει ολες τις εμφανισεις του speed σε 50 πριν φτιαξει το εκτελεσιμο. Επισης με το πρωτο δεν δηλωνεις σταθερα απλα ειναι αυτο που ειπα δινεις οδηειες στον compiler(ή μηπως στον preprocessor δεν θυμαμαι αλλα και παλι το αποτελεσμα ειναι το ιδιο). Αυτο ξερω εγω εμπειρικα σαν διαφορα.

Link to comment
Share on other sites

το δευτερο είναι για portability κώδικα και εύκολες αλλαγές μιας σταθεράς

το πρώτο είναι για να κάνεις καθαρότερο και πιο κατανοητό τον κώδικα σου

ωστε τα νούμερα για αυτόν που τον διαβάζει να αποκτουν νόημα

Link to comment
Share on other sites

Μπορείτε να δώσετε ενα παραδειγμα χρησης του 1ου και ενα παραδειγμα χρησης του 2ου ωστε να φανει η διαφορα στην χρήση τους σε ενα προγραμμα ;

Κατι ακομα, ποια η διαφορα της scanf("%s",&var) και της gets(var); Νομιζω οτι η δευτερη ειναι μονο για string. Αλλα σε ενα βιβλιο που διαβαζω ολη την ωρα τα βαζει ολα στο char και μετα τα αλλαζει με atoi σε numerical var μονο και μονο για να κανει χρηση του gets(). Ειναι λογικο ; Ποιο χρησιμοποιειται πιο συχνα ;

Link to comment
Share on other sites

Για gets() και scanf τις διαφορες μπορεις να δεις εδω:

http://www.cplusplus.com/reference/clibrary/cstdio/scanf.html

http://www.cplusplus.com/reference/clibrary/cstdio/gets.html

Η scanf μπορει να παρει πολλες παραμετρους διαφορων τυπων...επισης μπορεις να καθορισεις και τον χαρακτηρα που θα εχεις αναμεσα στις τιμες αναμεσα στις τιμες για διαβασμα.

π.χ

int i;

char c;

float fl;

scanf("%d %s %f",&i,&c,&fl);

Η gets διαβαζει μια σειρα απο χαρακτηρες και αποθηκευει αυτο που διαβαζει ως string.

Οσο για define και const για μενα το ιδιο φαινεται πρακτικα ισως η διαφορα να ειναι σε αυτο που λεει ο bsakel πιο πανω.

Απλως στην σχολη θυμαμαι δηλωναμε καποιες σταθερες οπως το PI συνηθως με define.

Link to comment
Share on other sites

:D Δηλαδη αν καταλαβα καλα, οταν εχω πχ οταν θελω μια αριθμητικη μεταβλητη, θα χρησιμοποιω την scanf . Το λεω αυτο γιατι μου φαινεται παραλογο το βιβλιο που εχω, σε καθε script πχ βαζει μια μεταβλητη char num και μια int number. Στην num διαβαζει το input μεσω gets() και μετα με atoi την περναει στην scanf. Δεν ειναι βλακια αυτο ;

Βασικα, κατι ακομα, πως γινεται να βαλω περιορισμο στο input μια μεταβλητης ; Πχ αν πατησω 2222222222222222222222 αντι για 2, τοτε γινεται keyboard overflow και κρασαρει το προγραμμα.

Κατι ακομα, τι εννοεις portability Saga ; Το ιδιο απλο ειναι να αλλαξεις την τιμη τοσο στην Define οσο και στην const. Εννοεις μηπως οτι η πρωτη, δεν παιζει σε αλλο PC ή κατι τετοιο με συμβατοτητα ;

Link to comment
Share on other sites

const βάζεις μια σταθερή τιμή που επαναλαμβάνεται στο πρόγραμμα πολλές φορές

και θέλεις αν την αλλάζεις αλλάζοντας τιμή σε ένα σημείο.

ίσως σε μπέρδεψε ο όρος portability δεν ξέρω αν είναι απολύτως δόκιμος

την εύκολη αλλαγή εννοούσα μια μεταβλητής χωρίς να διατρέχεις όλο τον κώδικα.

το Portability εμπεριέχει και πολλά άλλα

Define κάνεις για να μην υπάρχει μεταβλητή αλλά σε compile time να παίρνει αριθμητική τιμή η ισοδύναμη έκφραση.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.