Книга: Язык Си - руководство для начинающих
Символьные константы
Символьные константы
В языке Си символы заключаются в апострофы. Поэтому, когда мы присваиваем какое-то значение переменной broiled типа char, мы должны писать
broiled = ' Т '; /* ПРАВИЛЬНО */,
а не
broiled = Т; /* НЕПРАВИЛЬНО */
Если апострофы опущены, компилятор "считает", что мы используем переменную с именем Т, которую забыли описать.
В стандарте языка Си принято правило, согласно которому значениями переменной или константы типа char могут быть только одиночные символы. В соответствии с этим последовательность операторов, указанная ниже, является недопустимой, поскольку там делается попытка присвоить переменной bovine значение, состоящее из двух символов:
ehar bovine;
bovine = ' ox '; /*НЕПРАВИЛЬНО */
Если вы посмотрите на таблицу кода ASCII, то увидите, что некоторые из "символов" в ней не выводятся на печать. Например, при использовании в программе символа номер 7 терминал компьютера издает звуковой сигнал. Но как использовать символ, который невозможно набрать на клавиатуре? В языке Си для этого имеются два способа.
В первом способе используется сам код ASCII. Вы должны только указать номер символа вместе с предшествующим знаком "обратная косая черта". Мы уже делали это в нашей программе "золотой эквивалент". Вот эта строка
beep = ' 07 ';
Здесь имеются два важных момента, которые вы должны отчетливо представлять себе. Первый - это то, что последовательность знаков заключается в апострофы точно так же, как это делается с обычным символом. Второе - то, что номер символа должен быть записан в восьмеричном виде. При записи последовательности знаков мы можем случайно пропустить нули в первых позициях; в этом случае для представления кода "сигнал" мы могли бы использовать '7' или даже '7'. Но ни в коем случае не опускайте в записи последние нули! Последовательность символов '20' можно записать в виде '20', но не '2'.
При использовании кода ASCII необходимо отметить различие между числами и символами, обозначающими числа. Например, символу "4" соответствует код ASCII, равный 52. Это символ "4" а не число 4.
РИС. 3. 4. Формы записи констант целых типов
Во втором способе представления "неудобных" знаков используются специальные последовательности символов. Они называются управляющими последовательностями и выглядят следующим образом:
n новая строка
t табуляция
b шаг назад
r возврат каретки
f подача бланка
обратная косая черта ()
' апостроф (')
" кавычки (")
При присваивании символьной переменной эти последовательно сти тоже должны быть заключены в апострофы. Например, мы могли бы написать оператор
nerf = ' n ';
а затем вывести на печать переменную nerf; это приведет к продвижению на одну строку вперед на печатающем устройстве или на экране дисплея.
Первые пять управляющих последовательностей являются общепринятыми символами, предназначенными для управления работой печатающего устройства:
символ "новая строка" вызывает переход к новой строке;
символ "табуляция" сдвигает курсор или печатающую головку на некоторое фиксированное число позиций 5 или 8;
символ "шаг назад" производит сдвиг назад на одну позицию;
символ "возврат каретки" осуществляет возврат к началу строки;
символ "подача бланка" вызывает протяжку бумаги на одну страницу.
В последних трех управляющих последовательностях символы , ', " можно считать символьными константами [поскольку они служат для определения символьных констант и непосредственно используются в операторе printf( ), применение их самих в качестве символов могло бы привести к ошибке]. Если вы хотите вывести на печать строку.
Запомните, " символ называется обратная косая черта".
оператор будет выглядеть так:
printf(" Запомните, " символ называется обратная косая черта. " n");
Здесь у вас могут возникнуть два вопроса. Во-первых, почему мы не заключили управляющие последовательности в апострофы? Во-вторых, в каких случаях необходимо использовать код ASCII и когда управляющие последовательности, которые мы только что обсуждали? (Мы надеемся, что у вас возникли как раз эти вопросы, ПОТОМУ что мы собираемся отвечать именно на них.)
1. Когда символ является частью строки символов, заключенной в кавычки, он входит туда без апострофов независимо от того, является ли он управляющим или нет. Заметим, что все остальные символы в нашем примере (3,а, п, о, м, н, и т. д.) тоже присутствуют в этой строке без кавычек. Строка символов, заключенная в кавычки, называется символьной строкой или цепочкой. Мы обсудим этот вопрос в следующей главе.
2. Если у вас есть возможность выбора одной из двух форм записи некоторой специальной управляющей последовательности, скажем 'f', или эквивалентного кода из таблицы кодов ASCII - '16', то рекомендуем использовать 'f'. Во-первых, это более наглядно. Во-вторых, лучше согласуется с требованием переносимости программ, поскольку даже в том случае, когда в системе не используется код ASCII, обозначение 'f' будет продолжать "работать".
- Манифестные константы
- Константы
- Константы с плавающей точкой
- Символьные строки
- A2.5.2. Символьные константы
- 1.2.3. Константы, переменные и типы
- Строковые и символьные функции
- Символьные устройства
- Символьные функции
- Символьные данные в XML-документах
- Константы гудвилла: стиль, паблисити, репутация, имидж и бренд фирмы