Δημοσιεύτηκε: 15 Ιουν 2011, 23:02
@simosx Χωρίς να είμαι σίγουρος, είναι το utf που κάνει την διαφορά. Το a έχει τιμή και σε ASCII οπότε η stdio χρησιμοποιεί αυτό. Το α όμως δεν έχει και χρησιμοποιεί το utf-8 ισοδύναμο του που είναι δύο χαρακτήρες. (Αυτό το λέω γιατί θα έπρεπε να χρησιμοποιεί και για το a το utf-8 οπότε να μην έχει διαφορά, αφού χρησιμοποιούμε utf γραμματοσειρά στο τερματικό, αλλά από ότι φαίνεται δεν λειτουργεί έτσι).
@stamatiou Όσον αφορά στο παραπάνω πρόγραμμα int χρησιμοποιούμε μόνο στην μεταβλητή που μετράει τους χαρακτήρες. Τους χαρακτήρες αυτούς καθ' αυτούς δεν τους σώζει πουθενά το πρόγραμμα. Το μόνο που κάνει είναι να τσεκάρει αν πάτησε ο χρήστης EOF, μετά τους "ξεχνάει". Το ότι τους βλέπεις στην οθόνη σου καθώς τους πληκτρολογείς δεν οφείλετε στο πρόγραμμά αλλά στο λειτουργικό.
Εκτός από αυτό η C δεν έχει τύπο string (αν δεν χρησιμοποιήσεις μια συγκεκριμένη βιβλιοθήκη). Το string αναπαριστάται με έναν πίνακα από χαρακτήρες (char). O τύπος char είναι υποσύνολο του int. Παίρνει ακέραιες τιμές μέχρι το 255 μόνο.
Οπότε μπορείς να πεις ότι η "λέξη" για την C είναι είναι ένας πίνακας ακεραίων.
@stamatiou Όσον αφορά στο παραπάνω πρόγραμμα int χρησιμοποιούμε μόνο στην μεταβλητή που μετράει τους χαρακτήρες. Τους χαρακτήρες αυτούς καθ' αυτούς δεν τους σώζει πουθενά το πρόγραμμα. Το μόνο που κάνει είναι να τσεκάρει αν πάτησε ο χρήστης EOF, μετά τους "ξεχνάει". Το ότι τους βλέπεις στην οθόνη σου καθώς τους πληκτρολογείς δεν οφείλετε στο πρόγραμμά αλλά στο λειτουργικό.
Εκτός από αυτό η C δεν έχει τύπο string (αν δεν χρησιμοποιήσεις μια συγκεκριμένη βιβλιοθήκη). Το string αναπαριστάται με έναν πίνακα από χαρακτήρες (char). O τύπος char είναι υποσύνολο του int. Παίρνει ακέραιες τιμές μέχρι το 255 μόνο.
Οπότε μπορείς να πεις ότι η "λέξη" για την C είναι είναι ένας πίνακας ακεραίων.