Г. Шилдт - С#4.0 Полное руководство (1160795), страница 15
Текст из файла (страница 15)
Например, ' а ' и ' Ъ ' являются символьными литералами. Целочисленные литералы указываются в виде чисел без дробной части. Например, 10 и -100 — это целочисленные литералы. Для обозначения литералов с плавающей точкой требуется указывать десятичную точку и дробную часть числа. Например, 11 . 123 — это литерал с плавающей точкой. Для вещественных чисел с плавающей точкой в О) допускается также использовать экспоненциальное представление. 80 часть е язык Сй У литералов должен быть также конкретный тип, поскольку СФ является строго типизированным языком. В этой связи возникает естественный вопрос: к какому типу следует отнести числовой литерал, например 2, 12 3987 или О . 232 К счастью, для ответа на этот вопрос в СФ установлен ряд простых для соблюдения правил.
Во-первых, у целочисленных литералов должен быть самый мелкий целочисленный тип, которым они могут быть представлены, начиная с типа 1пг. Таким образом, у целочисленных литералов может быть один из следующих типов: ьпг, пыль, 1оп9 или п1опд в зависимости от значения литерала. И во-вторых, литералы с плавающей точкой относятся к типу с1опЬ1е. Если вас не устраивает используемый по умолчанию тип литерала, вы можете яяно указать другой его тип с помощью суффикса. Так, для указания типа 1оп9 к литералу присоединяется суффикс 1 или 1. Например, 12 — это литерал типа ьпг, а 121 — литерал типа 1опд.
Для указания целочисленного типа без знака к литералу присоединяется суффикс и или О. Следовательно, 10 0 — это литерал типа 1пс, а 1 0 00 — литерал типа пыле. А для указания длинного целочисленного типа без знака к литералу присоединяется суффикс с1 или 01. Например, 98437501 — это литерал типа с1опц. Кроме того, для указания типа Поаг к литералу присоединяется суффикс 8 или г. Например, 1 О .
1 98 — это литерал типа 11оа с. Можете даже указать тип гГосЬ1е, присоединив к литералу суффикс с1 или Р, хотя это излишне. Ведь, как упоминалось выше, по умолчанию литералы с плавающей точкой относятся к типу сГопЬ1е. И наконец, для указания типа бе с1ва1 к литералу присоединяется суффикс и или ьь Например, 9 . 95и — это десятичный литерал типа сГес1вга1.
Несмотря на то что целочисленные литералы образуют по умолчанию значения типа ьпг, пыле, 1опд или п1оп9, их можно присваивать переменным типа Ьуге, вЬусе, вЬогг или свпогг, при условии, что присваиваемое значение может быть представлено целевым типом. Шестнадцатеричные литералы Вам, вероятно, известно, что в программировании иногда оказывается проще пользоваться системой счисления по основанию 16, чем по основанию 10.
Система счисления по основанию 16 называется игесягнадцаягеричнои1 В ней используются числа от 0 до 9, а также буквы от А до Р, которыми обозначаются десятичные числа 10, 11, 12, 13, 14 и 15. Например, десятичному числу 16 соответствует шестнадцатеричное число 10. Вследствие того что шестнадцатеричные числа применяются в программировании довольно часто, в СФ разрешается указывать целочисленные литералы в шестнадцатеричном формате. Шестнадцатеричные литералы должны начинаться с символов Ох, т.е. нуля и последующей латинской буквы "икс".
Ниже приведены некоторые примеры шестнадцатеричных литералов. соопс = Охте; // 255 в десятичной системе 1псг = Ох1а; // 26 в десятичной системе Управляющие последовательности символов Большинство печатаемых символов достаточно заключить в одинарные кавычки, но набор в текстовом редакторе некоторых символов, например возврата каретки, вызывает особые трудности.
Кроме того, ряд других символов, в том числе одинарные и двойные кавычки, имеют специальное назначение в СФ, поэтому их нельзя исполь- зовать непосредственно. По этим причинам в С)т предусмотрены специальные управ- ляюи(ие последовательности символов, иногда еще называемые константами с обратнои касаи яертои (табл. 3.2). Такие последовательности применяются вместо тех символов, которых они представляют.' Таблица 3.2. Управляющие последовательности символов Управляющая последовательность Описание Например, в следующей строке кода переменной сп присваивается символ табуляции. сп = А в приведенном ниже примере кода переменной сп присваивается символ одинарной кавычки.
сп = Строковые литералы В Св поддерживается еще один тип литералов — строковый. Строковый литерал представляет собой набор символов, заключенных в двойные кавычки. Например следующий фрагмент кода: "это тест" представляет собой текстовую строку. Образцы подобных строк не раз встречались в приведенных выше примерах программ. Помимо обычных символов, строковый литерал может содержать одну или несколько управляющих последовательностей символов, о которых речь шла выше.
Рассмотрим для примера программу, в которой используются управляющие последовательности гп и )С. /! Продемонстрировать применение управляюших последовательностей символов в строковых литералах. .патлам Бувсеш) слазя Болоево ( всвсгс лов В нагл() ( 'га ть ') б ')и ')ъ ~0 Глава 3.
Типы данных, литералы и переменные 81 Звуковой сигнал (звонок) Возврат на одну позицию Перевод страницы (переход на новую страницу) Новая строка (перевод строки) Возврат каретки Горизонтальная табуляция Вертикальная табуляция Пустой символ Одинарная кавычка Двойная кавычка Обратная косая черта 82 Часть!. Язык С() Сопяо1е.иг1теЬ1пе("Первая строка1пВторая строка1птретья строка" ); Сопяо1е.нгтте11пе("Один1тдва1гтри")," Сопяо1е.нг1теь1пе("Четыре1тпять\тиесть")) Вставить кавычки. Сопяо1е.нгттеЬ1пе("~"Зачем71", спросил он."); ) ) Результат выполнения этой программы приведен ниже. Первая строка Вторая строка Третья строка Один Два Три Четыре Пять Шесть "Зачем?", спросил он.
В приведенном выше примере программы обратите внимание на то, что для перехода на новую строку используется управляющая последовательность ~ и. Для вывода нескольких строк совсем не обязательно вызывать метод Хт1СВЬ1пе () несколько раз — достаточно вставить управляющую последовательность ) п в тех местах удлиненной текстовой строки (или строкового литерала), где должен происходить переход на новую строку.
Обратите также внимание на то, как в текстовой строке формируется знак кавычек. Помимо описанной выше формы строкового литерала, можно также указать буквальным строковый литерал. Такой литерал начинается с символа 8, после которого следует строка в кавычках. Содержимое строки в кавычках воспринимается без изменений и может быть расширено до двух и более строк. Это означает, что в буквальный строковый литерал можно включить символы новой строки, табуляции и прочие, не прибегая к управляющим последовательностям.
Единственное исключение составллют двойные кавычки ("), для указания которых необходимо использовать две двойные кавычки подряд (" "). В приведенном ниже примере программы демонстрируется применение буквальных строковых литералов. !/ Продемонстрировать применение буквальных строковых литералов.
оятпч Зуятею; с1аяя уегоат1ю ( ятат1с чотб мати() ( Сопяо1е.нг1теЬ1пе(в"Зто буквальный строковый литерал, эанимаююий несколько строк. Сопяо1е.иг1те11пе(6"А это вывод с табуляцией: 1 2 3 4 5 б 7 В Сопяо1е.игттешпе(9"Отвыв программиста". ""Мне нравится С()ди'") ) ) Результат выполнения этой программы приведен ниже. Глава 3. Типы данных, литералы и переменные 83 Это буквальный строковый литерал, занимающий несколько строк. Х зто вывал С-табуляцией: 1 2 3 4 5 б 7 8 Отзыв программиста: "Мне нравится С№.' Следует особо подчеркнуть, что буквальные строковые литералы выводятся в том же виде, в каком они введены в исходном тексте программы.
Преимущество буквальных строковых литералов заключается в том, что они позволяют указать в программе выводимый результат именно так, как он должен выглядеть на экране. Но если выводится несколько строк, то переход на новую строку может нарушить порядок набора исходного текста программы с отступами. Именно по этой причине в примерах программ, приведенных в этой книге, применение буквальных строковых литералов ограничено. Тем не менее они приносят немало замечательных выгод во многих случаях, когда требуется форматирование выводимых результатов.
И последнее замечание: не путайте строки с символами. Символьный литерал, например ' х ', обозначает одиночную букву типа сггаг. А строка, состоящая из одного символа, например "Х", по-прежнему остается текстовой строкой. Более подробное рассмотрение переменных Переменные объявляются с помощью оператора следующей формы: тип имя переменной; где тип — это тип данных, хранящихся в переменной; а имя переменной — это ее имя. Объявить можно переменную любого действительного типа, в том числе и описанных выше типов значений. Важно подчеркнуть, что возможности переменной определяются ее типом.
Например, переменную типа Ьоо1 нельзя использовать для хранения числовых значений с плавающей точкой. Кроме того, тип переменной нельзя изменять в течение срока ее существования. В частности, переменную типа 1пс нельзя преобразовать в переменную типа ОГгаг. Все переменные в С№ должны быть объявлены до их применения. Это нужно для того, чтобы уведомить компилятор о типе данных, хранящихся в переменной, прежде чем он попытается правильно скомпилировать любой оператор, в котором используется переменная. Это позволяет также осуществлять строгий контроль типов в С№. В С№ определено несколько различных видов переменных. Так, в предыдущих примерах программ использовались переменные, называемые локальными, поскольку они объявляются внутри метода. Инициализация переменной Задать значение переменной можно, в частности, с помощью оператора присваивания, как было не раз продемонстрировано ранее.
Кроме того, задать начальное значение переменной можно при ее объявлении. Для этого после имени переменной указывается знак равенства (=) и присваиваемое значение. Ниже приведена общая форма инициализации переменной: 84 часть ). Язык С(( тип имя переменной = значение; где значение — это конкретное значение, задаваемое при создании переменной. Оно должно соответствовать указанному типу переменной. Ниже приведены некоторые примеры инициализации переменных. 1пс сопля = 10; // задать начальное значение 10 переменной соцпп.
сваг сЬ = 'Х'; // инициализировать переменную сЬ буквенным значением Х. Поап Г = 1.2Г // переменная Г инициализируется числовым значением 1,2. Если две или более переменные одного и того же типа объявляются списком, разделяемым запятыми, то этим переменным можно задать, например, начальное значение. ьпс а, Ь = 8, с = 19, 04 // инициалиэиРовать переменные Ь и с В данном примере инициализируются только переменные Ь и с. Динамическая инициализация В приведенных выше примерах в качестве инициализаторов переменных использовались только константы, но в С() допускается также динамическая инициализация переменных с помощью любого выражения, действительного на момент объявления переменной. Ниже приведен пример краткой программы для вычисления гипотенузы прямоугольного треугольника по длине его противоположных сторон.
Продемонстрировать динамическую инициализацию. цяьпд Яуясеаи с1аяя Оуп1пьс ( яяаяьс чоьб Ма1п() ( // Длина сторон прямоугольного треугольника. аооЬ1е в1 = 4.0; ОоцЬ1е я2 = 5.0; Инициализировать переменную Ьурос динамически. боцЬ1е бурея = Маял.яцгя( (я1 * я1) + (я2 * я2) Сопяо1е.иг1яе("Гипотенуза треугольника со сторонами в1 т " и " т я2 ь " равна Сопяо1е.ыгьяевьпе("(О:4.444).", Ьурог): ) ) Результат выполнения этой программы выглядит следующим образом. Гипотенуза треугольника со сторонами 4 и 5 равна 6.403 В данном примере объявляются три локальные переменные: я1, з2 и Ьуроб. Две из них (я 1 и я 2) инициализируются константами, А третья (Ьуро с) динамически инициализируется вычисляемой длиной гипотенузы. Для такой инициализации используется выражение, указываемое в вызываемом методе МаСЬ.