Опубликован: 19.02.2009 | Доступ: свободный | Студентов: 2774 / 580 | Оценка: 4.35 / 4.11 | Длительность: 16:28:00
ISBN: 978-5-94774-401-9
Лекция 3:

Операции

< Лекция 2 || Лекция 3: 123 || Лекция 4 >

Выражения и преобразование типов

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

Замечание. Список математических функции, реализованных в С# приведен в приложении 2.

Примеры выражений:

(а + 0.12)/6			
х && у || !z			
(t * Math.Sin(x)-l.05e4)/((2 * k + 2) * (2 * k + 3))

Операции выполняются в соответствии с приоритетами (см. приложение 1). Для изменения порядка выполнения операций используются круглые скобки. Если в одном выражении записано несколько операций одинакового приоритета, то унарные операции, условная операция и операции присваивания выполняются справа налево, остальные - слева направо. Например,

а = b = с означает a=(b=c),

a+b+c означает (а + b) + с.

Задания
  1. Укажите последовательность выполнения операций в данном выражении:

    (x*x+Math.Sin(x+1))/x-2.

  2. Запишите заданное математическое выражение по правилам языка С#:
    • \sqrt{x^4+\sqrt{|x+1|}}
    • \frac{a^2+b^2}{1-\cfrac{a^3-b}{3}}
    • \ln{\left|(y-\sqrt{|x|})\left( x-\cfrac{y}{x+\frac {x^2}{4}}\right) \right |}

Результат вычисления выражения характеризуется значением и типом. Например, если а и b - переменные целого типа и описаны так:

int а = 2, b = 5;

то выражение а + b имеет значение 7 и тип int.

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


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

< Лекция 2 || Лекция 3: 123 || Лекция 4 >
Ольга Белоглазова
Ольга Белоглазова
Россия, Кубинка