Результатом является значение x с обратным знаком. Если x является NaN, то результат также равен NaN. Данная константа возвращается в том случае, если результат операции является неопределенным.
Пример.
double a = 0.0;
double r = 0.0;
var d = a / r;
Console.WriteLine(d);
Результат.
Минус бесконечность это результат деления отрицательного числа на нуль.
Плюс бесконечность это результат деления положительного числа на нуль.
Оператор логического отрицания .
Операции вида !x
Существует единственный стандартный оператор логического отрицания:
bool operator !(bool x);
Этот оператор вычисляет логическое отрицание операнда. Если операнд равен true, то результат равен false. Если операнд равен false, то результат равен true.
Пример
Console.WriteLine(!true);
Console.WriteLine(!false);
Поразрядное отрицание.
Операция вида ~x результатом операции является побитовое дополнение x.
Оператор ~ выполняет операцию поразрядного дополнения операнда, заключающуюся в инвертировании каждого бита. Операторы поразрядного дополнения предопределены для типов int, uint, long и ulong
int v = 0;
Console.WriteLine("~0x{0:x8} = 0x{1:x8}", v, ~v);
Результат
int v = 0;
int vv = ~v;
Console.WriteLine("~{0:d} = {1:d}", v, vv);
Примеры:
static void Main(string[] args)
{
Console.WriteLine(~1999999999);
}
Результат выражения -2000000000, тип – int
static void Main(string[] args)
{
Console.WriteLine(~3999999999);
}
Результат выражения 294967296, тип – uint
static void Main(string[] args)
{
Console.WriteLine(~5999999999);
}
Результат выражения -6000000000, тип – long
Префиксные операторы инкремента и декремента .
Стандартные операторы ++ и -- применимы к следующим типам: sbyte, byte, short, ushort, int, uint, long, ulong, char, float, double, decimal и любым типам перечисления. Стандартный оператор ++ возвращает значение, полученное добавлением 1 к операнду, а стандартный оператор -- возвращает значение, полученное вычитанием 1 из операнда. В контексте checked если результат такого сложения или вычитания выходит за пределы допустимого диапазона для типа результата и результат имеет целый тип или тип перечисления, то возникает исключение System.OverflowException.
Примеры.
double x;
x = 1.5;
Console.WriteLine(++x);
x = 1.5;
Console.WriteLine(x++);
Console.WriteLine(x);
Бинарные операторы содержат два операнда и они записываются в виде инфикса (например, x + y).
Арифметические операторы
мультипликативное_выражение:
унарное_выражение
мультипликативное_выражение * унарное_выражение
мультипликативное_выражение / унарное_выражение
мультипликативное_выражение % унарное_выражение
аддитивное_выражение:
мультипликативное_выражение
аддитивное_выражение + мультипликативное_выражение
аддитивное_выражение – мультипликативное_выражение
Оператор произведения .
Произведение целых чисел. Пример.
Console.WriteLine(5 * 2);
В контексте checked если произведение выходит за пределы диапазона типа результирующего значения, возникает исключение System.OverflowException. В контексте unchecked о переполнениях не сообщается, и все старшие биты, выходящие за пределы диапазона результирующего значения, отбрасываются.
Пример.
int a = 2147483647;
int b = 2147483647;
var t = a * b;
Console.WriteLine(t);
int a = 2147483647;
int b = 2147483647;
var t = checked(a * b);
Console.WriteLine(t);
Произведение чисел с плавающей запятой. Пример. Умножение числа типа int на число типа double.
var t = -.5 * 2;
Console.WriteLine(t);
В результате тип переменной – doudle.
Произведение вычисляется в соответствии с арифметическими правилами стандарта IEEE 754. В следующей таблице приведены результаты всех возможных комбинаций ненулевых конечных значений, нулей, бесконечных значений и ошибок NaN В таблице x и y являются положительными конечными значениями, а z является результатом x * y. Если результат слишком велик для целевого типа, то z равно бесконечности. Если результат слишком мал для целевого типа, то z равно нулю.
+y | –y | +0 | –0 | +∞ | –∞ | NaN | |
+x | +z | –z | +0 | –0 | +∞ | –∞ | NaN |
–x | –z | +z | –0 | +0 | –∞ | +∞ | NaN |
+0 | +0 | –0 | +0 | –0 | NaN | NaN | NaN |
–0 | –0 | +0 | –0 | +0 | NaN | NaN | NaN |
+∞ | +∞ | –∞ | NaN | NaN | +∞ | –∞ | NaN |
–∞ | –∞ | +∞ | NaN | NaN | –∞ | +∞ | NaN |
NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
Пример
double w1 = 1.7976931348623157E+308;
double w2 = 1.7E+3;
double w3 = w1 * w2;
Дата: 2019-07-30, просмотров: 223.