Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / C / C++ / Введение в язык C++ / Описания и Константы /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Константы - Программирование от RIN.RU
Константы



Символьные Константы


Хотя в C++ и нет отдельного символьного типа данных, точнее, символ может храниться в целом типе, в нем для символов имеется специальная и удобная запись. Символьная константа - это символ, заключенный в одинарные кавычки; например, "a" или "0". Такие символьные константы в действительности являются символическими константами для целого значения символов в наборе символов той машины, на которой будет выполняться программа (который не обязательно совпадает с набором символов, применяемом на том компьютере, где программа компилируется). Поэтому, если вы выполняетесь на машине, использующей набор символов ASCII, то значением "0" будет 48, но если ваша машина использует EBCDIC, то оно будет 240. Употребление символьных констант вместо десятичной записи делает программу более переносимой. Несколько символов также имеют стандартные имена, в которых обратная косая \ используется как escape-символ:


"\b" возврат назад
"\f" перевод формата
"\n" новая строка
"\r" возврат каретки
"\t" горизонтальная табуляция
"\v" вертикальная табуляция
"\\" обратная косая (обратный слэш)
"\"" одинарная кавычка
"\"" двойная кавычка
"\0" null, пустой символ, целое значение 0



Вопреки их внешнему виду каждое является одним символом. Можно также представлять символ одно-, дву- или трехзначным восьмеричным числом (символ \, за которым идут восьмеричные цифры), или одно-, дву- или трехзначным шестнадцатиричным числом (\x, за которым идут шестнадцатиричные цифры). Например:


"\6" "\x6" 6 ASCII ack
"\60" "\x30" 48 ASCII "0"
"\137" "\x05f" 95 ASCII "_"


Это позволяет представлять каждый символ из машинного набора символов, и в частности вставлять такие символы в символьные строки (см. следующий раздел). Применение числовой записи для символов делает программу непереносимой между машинами с различными наборами символов.


Строки


Строковая константа - это последовательность символов, заключенная в двойные кавычки:


"это строка"


Каждая строковая константа содержит на один символ больше, чем кажется; все они заканчиваются пустым символом "\0" со значением 0.


Например:


sizeof("asdf")==5;


Строка имеет тип "вектор из соответствующего числа символов", поэтому "asdf" имеет тип char[5]. Пустая строка записывается "" (и имеет тип char[1]). Заметьте, что для каждой строки s strlen(s)==sizeof(s)-1, поскольку strlen() не учитывает завершающий 0.
Соглашение о представлении неграфических символов с обратной косой можно использовать также и внутри строки. Это дает возможность представлять в строке двойные кавычки и escape-символ \. Самым обычным символом этого рода является, безусловно, символ новой строки "\n".


Например:


cout << "гудок в конце сообщения\007\n"


где 7 - значение ASKII символа bel (звонок).


В строке невозможно иметь "настоящую" новую строку:


"это не строка,
а синтаксическая ошибка"


Однако в строке может стоять обратная косая, сразу после которой идет новая строка; и то, и другое будет проигнорировано.


Например:


cout << "здесь все \
ok"


напечатает


здесь все ok


Новая строка, перед которой идет escape (обратная косая), не приводит к появлению в строке новой строки, это просто договоренность о записи.


В строке можно иметь пустой символ, но большинство программ не будет предполагать, что есть символы после него. Например, строка "asdf\000hjkl" будет рассматриваться стандартными функциями, вроде strcpy() и strlen(), как "asdf".


Вставляя численную константу в строку с помощью восьмеричной или шестнадцатиричной записи благоразумно всегда использовать число из трех цифр. Читать запись достаточно трудно и без необходимости беспокоиться о том, является ли символ после константы цифрой или нет. Разберите эти примеры:


char v1[] = "a\x0fah\0129"; // "a" "\xfa" "h" "\12" "9"
char v2[] = "a\xfah\129"; // "a" "\xfa" "h" "\12" "9"
char v3[] = "a\xfad\127"; // "a" "\xfad" "\127"


Имейте в виду, что двузначной шестнадцатиричной записи на машинах с 9-битовым байтом будет недостаточно.


<<<  НазадВперед  >>>
 1  2  3 


 8  Комментарии к статье  8 8  Обсудить в чате

8  В тему

Описания

Имена

Типы

Экономия Пространства

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь