Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
программирование лекции.doc
Скачиваний:
32
Добавлен:
03.12.2018
Размер:
4.85 Mб
Скачать

4.3.2.3 Логический тип

Тип bool представляет значения истина/ложь, которые в С# определяются зарезервированными словами true и false. Таким образом, переменная или выражение типа bool будет иметь одно из этих двух значений. В С# не определено ни одно преобразование значения типа bool в целочисленное значение. Например, число 1 не преобразуется в значение true, а число 0 – в значение false.

4.3.2.4 Символьный тип

Язык программирования C# поддерживает один символьный тип данных – char. Тип char – 16-битный, так как С# использует кодировку Unicode вместо ASCII. Это позволяет отобразить все буквы, условные обозначения и другие символы всех письменностей мира, которые могут использоваться при работе с компьютером. Таким образом, тип char в С# – это беззнаковый 16-битный тип со значениями в диапазоне от 0 до 65535.

Unicode является расширением кодировки ASCII. Как уже было сказано, его первые 128 символов совпадают с символами ASCII. Это означает, что символы ASCII также допустимы в качестве символов C#. Функция Convert.ToInt32(c) возвращает порядковый номер (кодировку) символа (с), значение кода для определенного символа можно узнать также из технического описания.

Хотя тип char в С# определен как целый тип, следует помнить, что в языке отсутствует автоматическое преобразование из целых типов в char.

4.3.2.5 Финансовый тип

Для работы с денежными суммами в C# введен специальный тип decimal. Он для представления значений использует 128 разрядов в диапазоне: от 1Е-28 до 7.9Е+28. Тип decimal не относится к вещественным типам и отличается от других вещественных типов тем, что позволяет избежать ошибок округления, так как использует для представления дробной части чисел до 28 разрядов.

Величины финансового типа нельзя использовать в одном вы­ражении с вещественными без явного преобразования типа. Использование ве­личин финансового типа в одном выражении с целыми допускается.

4.3.3 Литералы

В программах C# литералы (константы) – это фиксированные значения. Литералы могут иметь любой тип. Компилятор, выделив константу в качестве лексемы, относит ее к одному из типов данных по ее внешнему виду. Есть определенные соглашения распознавания типа литерала по его записи (по умолчанию). Рассмотрим правила записи и интерпретации литералов различных типов (табл. 4.6).

Таблица 4.6 – Константы в С#

Константа

Описание

Примеры

Логическая

true (истина) или false (ложь)

True false

Целая

Десятичная: последовательность десятичных цифр, за которой может следовать суффикс (U, u, L, l, UL,Ul, uL, ul, LU, Lu, lU, lu)

Шестнадцатеричная: символы 0x или 0X, за которыми следуют шестнадцатеричные цифры (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, А, В, С, D, Е, F), а за цифрами, в свою очередь, может следовать суффикс (U, u, L, l, UL, Ul, uL, ul, LU, Lu, lU, lu)

4 142 13356

2u 0Lu 13356L

0xA 0x1B8 0X00FF

0xAU 0x1B8LU 0X00FFl

Вещественная

С фиксированной точкой:

Суффикс — один из символов F, f, D,d, M, m

С порядком:

[суффикс]

Суффикс — один из символов F, f, D,d, M, m

-3.1 .005 270

3.1F .005d

0.6E-3 .32e+5

0.2E6D .23e-5

Символьная

Символ, заключенный в апострофы

'п' 'у' ','

Строковая

Последовательность символов, заключенная в кавычки

"Пример"

null

Ссылка, которая не указывает ни на какой объект

null

Логических литералов всего два: true (истина) и false (ложь).

Целые литералы – это числа без дробной части. Поскольку в C# определено несколько целых типов, то по умолчанию считается, что типом целого литерала является тип с наименьшим диапазоном значений, в который попадает литерал, но с диапазоном не меньше чем int. Таким образом, литералы по умолчанию могут принадлежать одному из следующих типов: int, uint, long, ulong. Целые литералы могут быть представлены либо в десятичной, либо в шестнадцатеричной системе счисления. Когда компилятор распознает константу, он отводит ей место в памяти в соответст­вии с ее видом и значением.

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

Если пользователя не устраивают изложенные выше правила интерпретации типов литералов по умолчанию, он может явно наделить литерал требуемым типом с помощью соответствующего суффикса, добавив его в конец литерала:

  • для типа long суффиксы l или L, например: 12L;

  • для типа uint суффиксы u или U, например: 45U;

  • для типа ulong суффиксы ul или UL, например: 45632ul;

  • для типа float суффиксы f или F, например: 9.2F;

  • для типа decimal суффиксы m или M, например: 9.32M.

Символьная константа представляет собой любой символ в кодировке Unicode. Пустая символьная константа недопустима.

Символьные константы, помимо показанной в таблице 4.6 формы представления обычного символа, имеющего графическое представление (кроме апострофа и символа перевода строки), может записываться и в других формах:

  • управляющая последовательность – '\0', '\n';

  • символ в виде шестнадцатеричного кода – '\хF', '\х74';

  • символ в виде escape-последовательности Unicode – '\uА81В'.

Управ­ляющая последовательность интерпретируется как одиночный символ и исполь­зуется для представления:

  • кодов, не имеющих графического изображения (например, \n – переход в на­чало следующей строки);

  • символов, имеющих специальное значение в строковых и символьных лите­ралах, например, апострофа.

В таблице 4.7 приведены допустимые значения последовательностей. Если непосред­ственно за обратной косой чертой следует символ, не предусмотренный таблицей, возникает ошибка компиляции.

Таблица 4.7 – Управляющие последовательности в С#

Вид

Наименование

\a

Звуковой сигнал

\b

Возврат на шаг

\f

Перевод страницы (формата)

\n

Перевод строки

\r

Возврат каретки

\t

Горизонтальная табуляция

\v

Вертикальная табуляция

\\

Обратная косая черта

\’

Апостроф

\”

Кавычка

\0

Нуль-символ (Null)

Символ, представленный в виде шестнадцатеричного кода, начинается с пре­фикса \0х, за которым следует код символа. Числовое значение должно нахо­диться в диапазоне от 0 до 216 - 1, иначе возникает ошибка компиляции.

Escape-последовательности Unicode служат для представления символа в ко­дировке Unicode с помощью его кода в шестнадцатеричном виде с префиксом \u или \U, например, \u00F2, \U00010011. Коды в диапазоне от \U10000 до \U10FFFF представляются в виде двух последовательных символов; коды, превышающие \U10FFFF, не поддерживаются.

Строковые литералы представляют собой последовательность символов, заключенную в кавычки. Строка может быть пустой (записывается парой смежных двойных кавычек ""). Управляющие последовательности обоих видов могут использоваться и в стро­ковых литералах.

Константа null представляет собой значение, задаваемое по умолчанию для вели­чин ссылочных типов.