Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Programmirovanie ответы.docx
Скачиваний:
10
Добавлен:
26.04.2019
Размер:
260.09 Кб
Скачать

22. Преобразования встроенных арифметических типов-значений. Примеры использования.

Присвоение переменной одного типа значения другого типа

При этом будет выполнено автоматическое неявное преобразование типа переменной, стоящей справа от знака присваивания, в тип переменной, стоящей слева от знака присваивания, если тип левой части имеет больший диапазон значений, чем тип правой части. Такое преобразование, называемое расширяющим неявным преобразованием, осуществляет приведение более коротких типов к более длинным типам без потери значимости и точности. Для расширяющих преобразований числовые типы (целые типы, типы с плавающей точкой) совместимы друг с другом.

Например: long h; double z; …..z=h;…. // допустимое преобразование, но может вызвать потерю точности, но не потерю значимости.

Обратное же автоматическое преобразование из double в long недопустимо, потому что оно не является расширяющим.

Невозможны также автоматические преобразования:

  • между decimal и float или double;

  • числовых типов в char или bool;

  • между char и bool.

Преобразование из типов int, uint и long в тип float также может вызвать потерю точности, но не потерю значимости. В процессе других вари­антов неявного преобразования никакая информация не теряется.

23. Переменные. Именованные константы. Операции и выражения. Примеры использования.

Выражение — это правило вычисления значения. В выражении участвуют операнды, объединенные знаками операций. Операндами простейшего выражения могут быть константы, переменные и вызовы функций.

Например, у + 9 — это выражение, в котором + является знаком операции, а у и 9 — операндами. Пробелы внутри знака операции, состоящей из нескольких сим­волов, не допускаются. По количеству участвующих в одной операции опе­рандов операции делятся на унарные, бинарные и тернарную.

C# допускает введение в программу объектов, внешне похожих на переменные, но которые, в отличие от них, не могут изменять свое значение во время выполнения программы. Такие объекты называются константами. Имя константы – это синоним некоторого определенного значения, которое сопоставляется с этим идентификатором при описании.

Описание константы начинается со служебного слова Const, вслед за которым располагается тип, имя и значение константы:

Const int ALFA=35; const string OMEGA=”STROKA”;

Если константа определяется в программе, то ее идентификатор может входить во все конструкции, в которых должны присутствовать связанные с ним значения. Но попытка изменения значения константы в программе является недопустимой.

Пусть описана константа:

Const double spred=27.561;

double r;

{

r=spred+7.5;

spred=r+2.5

}

Последний оператор присваивания spred=r+2.5 пытается осуществить запрещенное преобразование – изменить значение константы spred.

Использование в программе идентификаторов констант вместо записи конкретных значений считается хорошим стилем программирования, который делает программу более читабельной, более понятной. Кроме того, в такую программу легче внести изменения, связанные с изменением константы, так как в этом случае изменения вносятся в область определения констант и не требуют просмотра всей программы.

C# расширяет возможности определения констант, допуская в правой части константные выражения, строящиеся по тем же правилам, что и обычные выражения, но они должны быть вычислимыми в рассматриваемой точке программы:

Пример.

const string slovo=”error”;

const string result=slovo+”__”;

const int l=5;

const int v=25;

const int lv=(l+v);

Особенность константных выражений состоит в том, что они вычисляются на стадии компиляции, т. е. для их вычисления не требуется выполнение самой программы.

Категория

Знак операции

Название

Первичные

.

х()

х[]

Х++

Х--

new

typeof

checked

unchecked

Доступ к элементу

Вызов метода или делегата

Доступ к элементу

Постфиксный инкремент

Постфиксный декремент

Выделение памяти

Получение типа

Проверяемый код

Непроверяемый код

Унарные

+

-

!

~

++X

--X

(тип) x

Унарный плюс

Унарный минус (арифметическое отрицание)

Логическое отрицание

Поразрядное отрицание

Префиксный инкремент

Префиксный декремент

Преобразование типа

Мультипликативные (типа умножения)

*

/

%

Умножение

Деление

Остаток от деления

Аддитивные (типа сложения)

+

-

Сложение

Вычитание

Сдвига

<<

>>

Сдвиг влево

Сдвиг вправо

Отношения и проверки типа

<

>

<=

>=

is

as

Меньше

Больше

Меньше или равно

Больше или равно

Проверка принадлежности типу

Приведение типа

Проверки на равенство

= =

! =

Равно

Не равно

Поразрядные логические

&

^

|

Поразрядная конъюнкция (И)

Поразрядное исключающее ИЛИ

Поразрядная дизъюнкция (ИЛИ)

Условные

логические

&&

| |

Логическое И

Логическое ИЛИ

Условная

? :

Условная операция

Присваивания

=

*=

/=

%=

+=

-=

<<=

>>=

&=

^=

| =

Присваивание

Умножение с присваиванием

Деление с присваиванием

Остаток отделения с присваиванием

Сложение с присваиванием

Вычитание с присваиванием

Сдвиг влево с присваиванием

Сдвиг вправо с присваиванием

Поразрядное И с присваиванием

Поразрядное исключающее ИЛИ с присваиванием

Поразрядное ИЛИ с присваиванием

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]