... символы представлены в виде шаблонов битов.
На компьютере все представлено в виде набора битов: символы, целые числа, действительные числа и исполняемый код. Восемь битов 01000001
могут представлять целое число 65
(хотя целые числа обычно занимают не менее 16 бит) или букву A
в системе ASCII. Существуют сложные способы отслеживания того, что есть что, это одна из основных обязанностей операционной системы и языков программирования высокого уровня. printf
— это один из тех редких случаев, когда программист должен явно сказать функции, какие данные передаются.
Я читал, что в C char на самом деле является целым числом, потому что символы представлены в виде шаблонов битов.
Это не совсем так: в C символы и целые числа были разными типами в течение очень долгого времени. C позволяет вам использовать char
как int
, если вы хотите, по выбору разработчиков языка: битовый шаблон в основном используется как соответствующий int
. C не позволит вам использовать float
как int
, так как битовая комбинация не даст вам ничего полезного (битовая комбинация для 1.0
совсем не похожа на битовую комбинацию для целого числа 1
).
Что касается таблицы ASCII, она воплощена в конструкции аппаратного и программного обеспечения, отображающего текст, и в функциях языка программирования, управляющих им. Компьютерный шрифт представляет собой преобразование чисел в формы. или «глифы». В простейшем случае он сопоставляет числа в диапазоне ASCII (32–126) с соответствующим глифом. (На самом деле это часто более косвенный путь к тому же результату). В старых компьютерных терминалах глифы были встроены, а в приложениях Windows или X11 используются программные шрифты.
Что касается языков программирования, то функция вроде isdigit()
или isalpha()
просто ищет код символа в таблице своих свойств: isdigit()
возвращает true
для чисел 48-57 (которые кодируют цифры ASCII) и false
для всех остальных. Никаких глифов не задействовано.
person
alexis
schedule
04.10.2012
printf("%c", chr)
) зависит от вас. Примечание: C определяетsizeof(char)==1
, который обычно равен 8 битам, но не обязательно. - person Brian White   schedule 04.10.2012