|
Типы, операторы и выраженияДругим примером преобразования char на int есть функция lower, которые отражают знак в нижнем регистре набора знаков ASCII. Если символ не является буквой верхнего регистра, lower возвращает его без изменений. / * Lower: переводит c в нижний регистр; только ASCII * / int lower (int c) { if (c> = 'A' & & c <= 'Z') return c + 'a' - 'A'; else return c; } Это работает только с набором ASCII, поскольку соответствующие буквы верхнего и нижнего регистра находятся на постоянной расстоянии как числовые значения и алфавит является непрерывным - нет ничего кроме букв между A и Z. Это последнее правило не является действительным в случае набора символов EBCDIC, поэтому этот код переводил бы не только буквы в случае EBCDIC. Стандартный файл заголовка c> = '0 '& & c <= '9' можно поменять на isdigit (c) С этого момента и впредь, мы воспользуемся функциями с Существует один нюанс, который касается преобразования знаков в целое. Язык C не уточняет, переменные типа char являются знаковыми или беззнаковыми величинами. Когда char преобразуются в int, не может это выдать отрицательное целое? Ответ отличается на разных машинах, отражая различия в архитектурах. На некоторых машинах, char с крайним левым битом равным 1 будет преобразована в отрицательное целое ("знаковое расширение"). На других, char сведено к int путем добавления нулей с левой стороны, а значит - всегда положительный. По определению, язык C гарантирует, что любой знак в машинном стандартном друковному наборе символов никогда не будет отрицательным, а значит всегда будет появляться положительной величиной в выражениях. Но произвольные последовательности битов, сохраненных в символьных переменных, могут оказаться отрицательными на некоторых машинах и, наоборот - положительными на других. Ради портабельности, указывайте signed (знаковый) или unsigned (беззнаковое), если несимвольни данные надо сохранить в переменных типа char. Продолжение статьи: ч.1 Продолжение статьи: ч.2 Продолжение статьи: ч.3 Продолжение статьи: ч.4 Продолжение статьи: ч.5 Продолжение статьи: ч.6 Продолжение статьи: ч.7 Продолжение статьи: ч.8 Продолжение статьи: ч.9 Продолжение статьи: ч.10 Продолжение статьи: ч.11 Продолжение статьи: ч.12 Продолжение статьи: ч.13 Продолжение статьи: ч.14 Продолжение статьи: ч.15 Продолжение статьи: ч.16 Продолжение статьи: ч.17 Продолжение статьи: ч.18 Продолжение статьи: ч.19 Другие статьи по теме: - Функции и структура программ- Введение в c++ - Внешние переменные и область действия - Типы, операторы и выражения - Символьные массивы |
|
2006-2024 © SMTI.RU Главная страница | Связаться с нами |