Главная Контакты


  На сайте

  Java, JavaScript
  Документация Perl
  Документация PHP
  Документация ASP
  Новости сайта
  Flash
  Интернет протоколы
  Apache
  Уроки программирования
  Язык программирования C
 


Типы, операторы и выражения


Другим примером преобразования 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.

Стандартный файл заголовка , описанный в Приложении Б, определяет семейство функций, обеспечивающих возможность проверок и преобразований, независимых от набора символов. Так, например, функция tolower является машинонезалежною заменой, приведенной выше, функции lower. Так же, проверку
c> = '0 '& & c <= '9'
можно поменять на
isdigit (c)

С этого момента и впредь, мы воспользуемся функциями с .

Существует один нюанс, который касается преобразования знаков в целое. Язык C не уточняет, переменные типа char являются знаковыми или беззнаковыми величинами. Когда char преобразуются в int, не может это выдать отрицательное целое? Ответ отличается на разных машинах, отражая различия в архитектурах. На некоторых машинах, char с крайним левым битом равным 1 будет преобразована в отрицательное целое ("знаковое расширение"). На других, char сведено к int путем добавления нулей с левой стороны, а значит - всегда положительный.

По определению, язык C гарантирует, что любой знак в машинном стандартном друковному наборе символов никогда не будет отрицательным, а значит всегда будет появляться положительной величиной в выражениях. Но произвольные последовательности битов, сохраненных в символьных переменных, могут оказаться отрицательными на некоторых машинах и, наоборот - положительными на других. Ради портабельности, указывайте signed (знаковый) или unsigned (беззнаковое), если несимвольни данные надо сохранить в переменных типа char.

Другие статьи по теме:

- Введение в c++
- Символьные массивы
- Типы, операторы и выражения
- Функции и структура программ
- Внешние переменные и область действия


Голосование:
Чего Вы хотели бы видеть больше на сайте?

Статей, документации
Скриптов
Программ для вебмастера
Я не знаю



Другие голосования

Обмен кнопочками:



Приглашаем Вас обменяться кнопочками! Обращайтесь к администратору.


Новые статьи:


Наши партнеры:





2006-2024 © SMTI.RU
Главная страница | Связаться с нами