Г. Шилдт - С#4.0 Полное руководство (1160795), страница 12
Текст из файла (страница 12)
Идентификаторы могут состоять из одного или нескольких символов. Имена переменных могут начинаться с любой буквы алфавита или знака подчеркивания. Далее может следовать буква, цифра или знак подчеркивания. С помощью знака подчеркивания можно повысить удобочитаемость имени переменной, как, например, 11пе поппе. Но идентификаторы, содержащие два знака подчеркивания подряд, например, пах ча1пе, зарезервированы для применения в компиляторе.
Прописные и строчные буквы в С(( различаются. Так, например юучаг и Мучат — это разные имена переменных. Ниже приведены некоторые примеры допустимых идентификаторов. ЕЕ Часть ). Язык С№ //в качестве идентификатора Гог(611 = ГО Йьт < 101 61тее) Соово1е.нгзаеъьае("Йгт равно " + Йтт)1 Приведенный ниже результат выполнения этой программы подтверждает, что 616 правильно интерпретируется в качестве идентификатора. 611 равно 0 Йтт равно 1 611 равно 2 Йьт равно 3 61Г равно 4 611 равно 5 616 равно б Йгт равно 7 61Г равно В 616 равно 9 Откровенно говоря, применять ключевые слова со знаком 6 в качестве идентификаторов не рекомендуется, кроме особых случаев.
Помимо того, знак 6 может предшеспювать любому идентификатору, но такая практика программирования считается плохой. Библиотека классов среды.НЕТ ГгавевогК В примерах программ, представленных в этой главе, применялись два встроенных метода: Иг1се) 1пе ( ) и Хг1ге () .
Как упоминалось выше, эти методы являются членами класса Сода о1е, относящегося к пространству имен 5 уз Севъ которое определяется в библиотеке классов для среды .)х)ЕТ Ргатезтог)с Ранее в этой главе пояснялось, что среда С№ опирается на библиотеку классов, предназначенную для среды .)Х)ЕТ РгатеттогК чтобы поддерживать операции ввода-вывода, обработку строк, работу в сети и графические пользовательские интерфейсы. Поэтому, вообще говоря, СФ представляет собой определенное сочетание самого языка С() и стандартных классов .)х)ЕТ. Как будет показано далее, библиотека классов обеспечивает функциональные возможности, являющиеся неотъемлемой частью любой программы на С().
Для того чтобы научиться программировать на С№, нужно знать не только сам язык, но и уметь пользоваться стандартными классами. Различные элементы библиотеки классов для среды .)х)ЕТ Ргатеттог)с рассматриваются в части 1 этой книги, а в части 11 — сама библиотека гю отдельным ее составляющим. 68 Часть !. Язык Са ПРИМЕЧАНИЕ В версии Ся 4.0 внедрен новый тип данных, называемый г!упасете и приводящий к отсрочке контроля типов до времени выполнения, вместо того чтобы производить подобный контроль во время компиляции. Поэтому тип г!упавз1с является исключением из обычного правила контроля типов во время компиляции.
Подробнее о типе с!упавзтс речь пойдет в главе 17. Типы значений в СУ В СФ имеются две общие категории встроенных типов данных: !иииы значений и ссылочные ишиы. Они отличаются по содержимому переменной. Если переменная относится к типу значения, то она содержит само значение, например 3,1416 или 212. А если переменная относится к ссылочному типу, то она содержит ссылку на значение. Наиболее распространенным примером использования ссылочного типа является класс, но о классах и ссылочных типах речь пойдет далее в этой книге.
А здесь рассматриваются типы значений. В основу языка СФ положены 13 типов значений, перечисленных в табл. 3.1. Все они называются простыми тинами, поскольку состоят из единственного значения, (Иными словами, они не состоят из двух или более значений.) Они составляют основу системы типов Са, предоставляя простейшие, низкоуровневые элементы данных, которыми можно оперировать в программе.
Простые типы данных иногда еще называют примитивными. Таблица.3.1. Типы значений в СЯ Тип Значение Ьоо1 Ьуге снаг бесьта1 с!осЬ1е !!оас Логический, предоставляет два значения: "истина" или "ложь" 8-разрядный целочисленный без знака Символьный Десятичный (для финансовых расчетов) С плавающей точкой двойной точности С плавающей точкой одинарной точности Целочисленный Длинный целочисленный 8-разрядный целочисленный со знаком Короткий целочисленный Целочисленный без знака Длинный целочисленный без знака Короткий целочисленный без знака 1пс 1опо зЬуте 5Ьогс игпС с1спо ивЬогг В СФ строго определены пределы и характер действия каждого типа значения.
Исходя из требований к переносимости программ, СФ не допускает в этом отношении никаких компромиссов. Например, тип 1пс должен быть одинаковым во всех средах выполнения. Но в этом случае отпадает необходимость переписывать код для кон- кретной платформы. И хотя строгое определение размерности типов значений может стать причиной незначительного падения производительности в некоторых средах, эта мера необходима для достижения переносимости программ. примечлние Помимо простых типов, е С№ определены еще три категории типов значений: перечисления, структуры и обнуляемые типы.
Все они рассматриваются далее а этой книге. Целочисленные типы В СФ определены девять целочисленных типов: спас, Ьусе, яЬусе, япогс, ияпогс, 1пс, о1пс, 1опд и о1опд. Но тип спас применяется, главным образом, для представления символов и поэтому рассматривается далее в этой главе. Остальные восемь целочисленных типов предназначены для числовых расчетов. Ниже представлены их диапазон представления чисел и разрядность в битах. Тип Разрядность в битах Диапазон представления чисел Ьусе яЬуте япогс ояпогс ьпг и1пс 1ооч и1опд Как следует из приведенной выше таблицы, в СЗ определены оба варианта различных целочисленных типов: со знаком и без знака.
Целочисленные типы со знаком отличаются от аналогичных типов без знака способом интерпретации старшего разряда целого числа. Так, если в программе указано целочисленное значение со знаком, то компилятор СФ сгенерирует код, в котором старший разряд целого числа используется в качестве флага знака. Число считается положительным, если флаг знака равен О, и отрицательным, если он равен 1. Отрицательные числа практически всегда представляются методом дополнения до двух, в соответствии с которым все двоичные разряды отрицательного числа сначала инвертирукттся, а затем к этому числу добавляется 1. Целочисленные типы со знаком имеют большое значение для очень многих алгоритмов, но по абсолютной величине они наполовину меньше своих аналогов без знака. Вот как, например, выглядит число 32 7б7 типа яноге в двоичном представлении.
0111111111111111 Если установить старший разряд этого числа равным 1, чтобы получить значение со знаком, то оно будет интерпретировано как -1, принимал во внимание формат дополнения до двух. Но если объявить его как значение типа се ног с, то после установки в 1 старшего разряда оно станет равным 65 535. 8 8 16 16 32 32 64 64 Глава 3. Типы данных, литералы и переменные 69 0-255 -128-127 — 32 768-32 767 0-65 535 -2 147 483 648-2 147 483 647 0-4 294 967 295 -9 223 372 036 854 775 808-9 223 372 036 854 775 807 0-18 446 744 073 709 551 615 70 Часть 1. Язык б№ Вероятно, самым распространенным в программировании целочисленным типом является тип 1пс.
Переменные типа ьпс нередко используются для управления циклами, индексирования массивов и математических расчетов общего назначения. Когда же требуется целочисленное значение с большим диапазоном представления чисел, чем у типа 1ЛС, то для этой цели имеется целый ряд других целочисленных типов. Так, если значение нужно сохранить без знака, то для него можно выбрать тип цьпС, для больших значений со знаком — тип 1оп9, а для больших значений без знака — тип ц1опц. В качестве примера ниже приведена программа, вычисляющая расстояние от Земли до Солнца в дюймах.
Для хранения столь большого значения в ней используется переменная типа 1опд. Вычислить расстояние от Земли до Солнца в дюймах. цзьпч зуягев; с1аяя 1псЛея ( згаггс чогп( Ма1п() ( 1опс 1пспез; 1опч в11ея; в11ея = 93000000г // 93 000 000 миль до Солнца // 5 280 футов в миле, 12 дюймов в футе. 1псЛез = в11ея * 5280 * 12; сопзо1е.испсеьгпе("Расстояние до солнца: .(пспея + " дюймов."); Вот как выглядит результат выполнения этой программы. Расстояние до Солнца: 5892480000000 дюймов. Очевидно, что этот результат нельзя было бы сохранить в переменной типа 1пс или пупс.
Самыми мелкими целочисленными типами являются Ьуге и ВЬуге. Тип ЬуСе представляет целые значения без знака в пределах от 0 до 255. Переменные типа Ьусе особенно удобны для обработки исходных двоичных данных, например байтового потока, поступающего от некоторого устройства. А для представления мелких целых значений со знаком служит тип зЬусе.
Ниже приведен пример программы, в которой переменная типа Ьуге используется для управления циклом, где суммируются числа от 1 до 100. // Использовать тип Ьусе. иягпч Зузоев; с1азз Ояе Ьуге ( зСаС1с чогп( Маьп() ( Ьусе х; ьпс зшп) зшп = О; Глава 3. Типы данных, литералы и переменные 71 Рог(х = 1г х <= 100г х++) Бащ = апщ + х; Сопао1е.нг1сев№пе("Сумма чисел от 1 до 100 равна " + анщ) Результат выполнения этой программы выглядит следующим образом. Сумма чисел от 1 до 100 равна 5050 В приведенном выше примере программы цикл выполняется только от 1 до 100, что не превышает диапазон представления чисел для типа Ьусе, и поэтому для управления этим циклом не требуется переменная более крупного типа. Если же требуется целое значение, большее, чем значение типа ьусе или еьусе, но меньшее, чем значение типа ьпс или п№пг, то длЯ него можно выбрать тип епогг или пзпогг.
Типы для представления чисел с плавающей точкой Типы с плавающей точкой позволяют представлять числа с дробной частью. В С№ имеются две разновидности типов данных с плавающей точкой: Поас и с)опЬ1е. Они представляют числовые значения с одинарной и двойной точностью соответственно. Так, разрядность типа 11оа с составляет 32 бита, что приближенно соответствует диапазону представления чисел от 5Е-45 до 3,4Е+38.