W książce „Complete Reference of C” jest wspomniane, że char
domyślnie jest bez znaku.
Ale próbuję to zweryfikować za pomocą GCC, a także Visual Studio. Domyślnie przyjmuje to jako podpisane .
Który jest prawidłowy?
char
może być bez znaku, z reguły użyj int
do odczytania wartości, używając getchar()
, która może zwrócić EOF
. EOF
jest zwykle definiowana jako -1
lub inna wartość ujemna, której przechowywanie w pliku unsigned
nie jest tym, czego chcesz. Oto deklaracja: extern int getchar();
BTW, to zalecenie pochodzi również z książki „C: A Reference Manual”.
char
przypadku podpisanego przypadku musiałbyś użyć int
do przechowywania wartości zwracanej.