Правила записи программы на языке Си 5 Правила формального описания синтаксиса языка программирования 6
Вид материала | Лекции |
Содержание4.3.Правила записи констант различных типов 4.4.Беззнаковый тип для целых данных 4.5.Символьные строки |
- Правила преобразований из одного типа в другой и правила приведения типов в языке Object, 19.03kb.
- Оформление программы на языке Паскаль. Оператор вывода. Описание переменных. Оператор, 186.34kb.
- Программа наименование дисциплины Латинский язык (1,2 уровни), 154.48kb.
- Экзаменационные вопросы по курсу "Методы программирования", 32.44kb.
- Вопросы по курсу Программирование на языке высокого уровня (яву), 102.97kb.
- Структура программы в языке программирования С++. Обмен данными между функциями (параметры, 37.24kb.
- Программа курса " Азы программирования", 26.19kb.
- Структура программы языка Турбо Паскаль Программа на языке Турбо Паскаль имеет вид, 792.5kb.
- Эволюция языков программирования, 493.92kb.
- Структура программы на языке Turbo Pascal, 26.15kb.
4.3.Правила записи констант различных типов
Константы - это объекты данных, которые не меняют своих значений в процессе выполнения программы. Имя константы однозначно определяет и ее тип, и ее значение.
В простейшем случае в Си определены три типа констант: целые, вещественные, символьные. Рассмотрим правила их записи.
БНФ:
целая_константа =
( десятичная | восьмеричная |
шестнадцатеричная ) ["l"|"L"]
десятичная = цифра {цифра}
восьмеричная = "0" цифра8 {цифра8}
шестнадцатеричная = "0" ( "x" | "X" ) цифра16 {цифра16}
цифра8 = "0"|"1"|...|"7"
цифра16 = "0"|"1"|...|"9"|"A"|"B"|"C"|"D"|"E"|"F"
Обычно целые константы имеют тип int, добавление сзади константы буквы l или L обозначает константу типа long.
Пример правильных целых констант: 17, 012L, 0x35, 1235L
Отрицательные целые константы получаются путем добавления знака "-" перед константой без знака. Значением целой константы является число, которое она обозначает.
БНФ:
вещ_константа = цифра {цифра} "." {цифра}
[ "e" [ "+" | "-" ] цифра {цифра} ]
Пример правильных вещественных констант: 12e-33, 12.5, 128.05e-56, 54e23 .
Отрицательные вещественные константы получаются путем добавления знака "-" перед константой без знака. Значением вещественной константы является число, которое она обозначает.
Символьной константой является любой символ, заключенный в апострофы: 'A', 'c', 'd'. Значение символьной константы - величина целого типа, равная коду символа из таблицы кодов.
Для обозначения некоторых невидимых управляющих символов используется специальная кодировка:
'\n' - символ перевода строки,
'\r' - символ возврата каретки,
'\t' - символ табуляции,
'\b' - символ возврата на шаг,
'\\' - обратная косая черта,
'\"' - кавычки,
'\0' - символ с кодом 0.
Несмотря на то, что специальные символы записываются с помощью двух символов, фактически определяется однобайтовая символьная константа.
Символ может быть представлен и его шестнадцатеричным кодом, перед которым необходимо поставить \x. Например: '\x4C'эквивалентно 'L' и т.д.
4.4.Беззнаковый тип для целых данных
Обычно целый тип охватывает и отрицательные и положительные значения. Например, тип int имеет диапазон значений от -32768 до 32767. Иногда отрицательные значения не нужны. Тогда имеется возможность вдвое увеличить диапазон положительных значений, т. е. от 0 до 65535. Это можно сделать если описать тип как беззнаковый.
БНФ:
имя_беззнакового_типа =
"unsigned "("int"|"long"|"short"|"char" )
Пример:
unsigned int ab, c, d;
4.5.Символьные строки
Последовательность символов, заключенная в двойные кавычки, представляет собой символьную строку. Двойные кавычки в строку не входят. Например, "Это строка символов". Первая кавычка указывает на начало строки, последняя на ее окончание.
Строка символов хранится в памяти ЭВМ как массив символов.
Массив символов представляет собой последовательность символов, расположенных в непрерывной области памяти и объединенных общим именем:
Э | т | о | | С | т | р | о | к | а | | с | и | м | в | о | л | о | в | \0 |
В конце строки символов компилятор ставит ноль-символ, т.е. символ, код которого равен 0. Он служит признаком конца строки.
Значение символьной строки - это адрес ее первого символа.
При трансляции программы компилятор разместит все символьные строки в памяти, а в программу вместо них подставит соответствующие адреса (т.е. значения символьных строк!).
Символьная строка является константой, т.е. ее невозможно изменить в процессе выполнения программы. На практике часто необходимо выполнять различные действия над символьными строками: например запросить ввод имени пользователя, которое затем используется в выводной информации. Подобные операции возможны, если описать переменную как массив символов.
БНФ:
описание_массива_символов =
"char " имя "["размер"]" { "," имя "["размер"]" } ";"
где размер - максимально возможное количество символов плюс 1 для размещения нуль символа.
Пример:
char name[50], fio[81];
Переменная name способна хранить строку из 49 символов, fio из 80. Значениями переменной name и fio являются адреса областей памяти, выделенных для хранения соответствующих строк.