в приложении B, определяет семейство
Стандартный заголовочный файл
<ctype.h>, описанный в приложении B, определяет семейство функций, которые позволяют проверять и преобразовывать символы независимо от символьного набора. Например, функция tolower(c) возвращает букву c в коде нижнего регистра, если она была в коде верхнего регистра, поэтому tolower - универсальная замена функции lower, рассмотренной выше. Аналогично проверку
c >= '0' && c
можно заменить на isdigit(c)
Далее мы будем пользоваться функциями из <ctype.h>.
Существует одна тонкость, касающаяся преобразования символов в целые числа: язык не определяет, являются ли переменные типа
char знаковыми или беззнаковыми. При преобразовании
char в
int может ли когда- нибудь получиться отрицательное целое? На машинах с разной архитектурой ответы могут отличаться. На некоторых машинах значение типа
char с единичным старшим битом будет превращено в отрицательное целое (посредством "распространения знака”). На других - преобразование
char в
int осуществляется добавлением нулей слева, и, таким образом, получаемое значение всегда положительно.
Гарантируется, что любой символ из стандартного набора печатаемых символов никогда не будет отрицательным числом, поэтому в выражениях такие символы всегда являются положительными операндами. Но произвольный восьмибитовый код в переменной типа
char на одних машинах может быть отрицательным числом, а на других - положительным. Для совместимости переменные типа
char, в которых хранятся несимвольные данные, следует специфицировать явно как
signed или
unsigned.
Отношения вроде i > j и логические выражения, перемежаемые операторами
&& и
||, определяют выражение-условие, которое имеет значение 1, если оно истинно, и 0, если ложно. Так, присваивание
d = c >= '0' && c
установит d в значение 1, если c есть цифра, и 0 в противном случае. Однако функции, подобные isdigit, в качестве истины могут выдавать любое ненулевое значение. В местах проверок внутри if, while, for и пр. "истина” просто означает "не нуль”.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий