Τα πάντα για την C

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

Re: Τα πάντα για την C

Δημοσίευσηαπό Star_Light » 04 Μαρ 2012, 03:35

Aπο οσο καταλαβα και απο το βιβλιο η διαφορετικα της αρχικοποίησης με την εκχώρηση έγκειται στο παρακάτω :

Κώδικας: Επιλογή όλων
int x = 2; // Initialization


Κώδικας: Επιλογή όλων
int x;
x=2; // assignment


Ισως λοιπον επειδη μπορεις να το συναντησεις σαν ορολογια οπως ειπες και εσυ την πρωτη πρωτη φορα που θα κανεις assign στην μεταβλητη να θεωρεισαι ο αλλος οτι ειναι pretty much same... δεν ειναι και μητρικη μου γλωσσα τα αγγλικα ουτε τον ειχα απεναντι μου να δω πως το λεει :lol: :lol:
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό Ilias95 » 04 Μαρ 2012, 03:35

migf1 έγραψε:Και το casting σε (int) είναι περιττό

Όχι (σύμφωνα με τον King :P ).
Η sizeof() επιστρέφει unsigned int. Μέσα στον κώδικα μου όμως θα κάνω σύγκριση της σταθεράς με κάποιον signed int.
Στην προκειμένη περίπτωση δεν θα υπάρχει πρόβλημα καθώς η sizeof δεν υπάρχει περίπτωση να επιστέψει αρνητική τιμή.
Όμως κάποιοι compilers είναι πιθανόν να παραπονεθούν.
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό Ilias95 » 04 Μαρ 2012, 03:38

@Star_Light
Το initialization γίνεται μία φορά.

Assignments μπορείς να κάνεις συνέχεια:
Κώδικας: Επιλογή όλων
int a;
a = 5;
a = 12;
a = 9;
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό migf1 » 04 Μαρ 2012, 03:38

Πες τους να πάνε να ξαναδιαβάσουν τα βιβλία τους. Καταρχήν όλες οι καθολικές μεταβλητές αρχικοποιούνται αυτόματα σε μηδενική τιμή. Έπειτα πες τους να σου πούνε, αφού δεν υπάρχει αρχικοποίηση τότε αυτό εδώ τί είναι...

Μορφοποιημένος Κώδικας: Επιλογή όλων
char s[255+1] = {'\0'};


ΥΓ. Επίσης, αποφάσισε ποιον θα εμπιστεύεσαι... αυτούς ή εμένα.
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό migf1 » 04 Μαρ 2012, 03:44

Ilias95 έγραψε:
migf1 έγραψε:Και το casting σε (int) είναι περιττό

Όχι (σύμφωνα με τον King :P ).
Η sizeof() επιστρέφει unsigned int. Μέσα στον κώδικα μου όμως θα κάνω σύγκριση της σταθεράς με κάποιον signed int.
Στην προκειμένη περίπτωση δεν θα υπάρχει πρόβλημα καθώς η sizeof δεν υπάρχει περίπτωση να επιστέψει αρνητική τιμή.
Όμως κάποιοι compilers είναι πιθανόν να παραπονεθούν.

Είναι περιττό να το συμπεριλάβεις μέσα στο macro... όταν θέλεις να κάνεις casting θα το κάνεις απευθείας στον κώδικά σου. Π.χ. αν θες να κάνεις cast το αποτέλεσμα του NUM_CHARS σε (long int) και όχι σε (int), τότε έτσι όπως το έχεις θα γίνει πρώτα cast σε int (θα γίνει δηλαδή truncate) και μετά ο int θα γίνει upgrade σε (long int).

Ενώ έτσι όπως σου είπα (χωρίς το casting μέσα στο macro δηλαδή) είσαι ελεύθερος να το κάνεις cast σε όποιον τύπο θέλεις, χωρίς να ρισκάρεις να χάσεις τιμές κατά τη διαδικασία.
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό Star_Light » 04 Μαρ 2012, 03:47

migf1 έγραψε:Πες τους να πάνε να ξαναδιαβάσουν τα βιβλία τους. Καταρχήν όλες οι καθολικές μεταβλητές αρχικοποιούνται αυτόματα σε μηδενική τιμή. Έπειτα πες τους να σου πούνε, αφού δεν υπάρχει αρχικοποίηση τότε αυτό εδώ τί είναι...

Μορφοποιημένος Κώδικας: Επιλογή όλων
char s[255+1] = {'\0'};


ΥΓ. Επίσης, αποφάσισε ποιον θα εμπιστεύεσαι... αυτούς ή εμένα.


migf1 δεν μου ειπε ποτε κανεις οτι δεν υπάρχει αρχικοποιηση :D
εγω σου ειπα οτι δεν υπάρχει "αρχιΧοποιηση" γιατι οντως δεν υπάρχει!!! Εκανες ενα λαθος
στο γραμμα και ειπα να κανω λιγη πλακα.

Δεν ειναι θεμα εμπιστοσυνης παντως... απλα δεν μπορω να σας ζαλιζω συνεχεια με τις δικες μου ερωτησεις....
απο αυτη την αποψη και για να μην κουραζω ρωταω και πουθενα αλλου.
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό migf1 » 04 Μαρ 2012, 04:04

Έχω μια απορία για την άσκηση... τα γράμματα Α-Ζ είναι λιγότερα από το συνολικό πλήθος των στοιχείων του πίνακα. Οπότε άμα φτάσει στο Z και υπάρχει κι άλλη κίνηση τι θα γίνει. Θα ξεκινάει πάλι από το Α;
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό Ilias95 » 04 Μαρ 2012, 04:05

migf1 έγραψε:Έχω μια απορία για την άσκηση... τα γράμματα Α-Ζ είναι λιγότερα από το συνολικό πλήθος των στοιχείων του πίνακα. Οπότε άμα φτάσει στο Z και υπάρχει κι άλλη κίνηση τι θα γίνει. Θα ξεκινάει πάλι από το Α;

Όχι. Τότε τερματίζει το πρόγραμμα.
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό migf1 » 04 Μαρ 2012, 04:08

Δεν το λέει πάντως στην εκφώνηση.
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό Ilias95 » 04 Μαρ 2012, 04:14

migf1 έγραψε:Δεν το λέει πάντως στην εκφώνηση.

Σωστά, αλλά δείχνει ένα παράδειγμα εξόδου. Αν και να σου πω την αλήθεια δεν το σκέφτηκα έτσι όπως λες. :P
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

ΠροηγούμενηΕπόμενο

Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι