Δημοσιεύτηκε: 25 Φεβ 2012, 17:15
από migf1
Ναι, διαφέρει από την Python... τα διπλά εισαγωγικά δηλώνουν πάντα string ( δηλαδή ειδικοί πίνακες χαρακτήρων, θα τα δεις πιο μετά στο βιβλίο ). Τα μονά εισαγωγικά δηλώνουν πάντα έναν χαρακτήρα. Π.χ. στη C το να γράψεις 'abcd' δίνει λάθος !!!

Για το: ch < '0' τώρα. Βασικά οι compilers τα char τα διαχειρίζονται πάντα ως int, ως δηλαδή τα ακέραια ASCII codes τους... το ίδιο μπορείς να κάνεις και εσύ στα προγράμματά σου. Μπορείς δηλαδή αντί για char να τα δηλώνεις ως int, αλλά για να είσαι συνεπής τότε αντί για '0' θα πρέπει π.χ. να γράφεις 48 (το ASCII code του χαρακτήρα '0').

Βασικά μπορείς να αναμίξεις τους τύπους char και int, καθώς και την απεικόνιση των τιμών τους όπως θέλεις, δεν θα σου βγάλει λάθος o compiler.

Μορφοποιημένος Κώδικας: Επιλογή όλων
char ch1 = 48;  /* ίσο με τον χαρακτήρα '0' */
int ch2 = '1'; /* ίσο με το integer ASCII code 49 */

ch2 = ch1; /* ίσο με τον χαρακτήρα '0' */
ch1 += ch2; /* το ch1 τώρα ισούται με 48 + '0' = 48 + 48 = 96 */

printf( "ch1 as char: %c", ch1 ); /* τυπώνει τον χαρακτήρα του ανάποδου αριστερού εισαγωγικού (άμα δεις το ASCII table, αυτός είναι ο χαρακτήρας με code 96 ) */


Άρα λοιπόν, το ...
Μορφοποιημένος Κώδικας: Επιλογή όλων
ch < '0'

συγκρίνει το ASCII code του ch με το ASCII code του χαρακτήρα '0' (48 είναι το ASCII code).

Θεώρησε πως όλα τα char είναι int, σύμφωνα με το ASCII table. Αν θέλεις να τα διαβάζεις/τυπώνεις ως χαρακτήρες το κάνεις με %c, ενώ αν θέλεις να διαβάζεις/τυπώνεις τα ASCII codes τους το κάνεις με %d. Εσωτερικά τα char αποθηκεύονται & διαχειρίζονται πάντα ως int (ASCII codes) ;)