Арифметичне заперечення (унарний мінус -) міняє знак операнда на протилежний. Стандартна операція заперечення визначена для типів int, long, float, double і decimal. До величин інших типів її можна застосовувати, якщо для них можливе неявне перетворення до цих типів (див. рис. 3.1). Тип результату відповідає типу операції.
Для значень цілого і фінансового типів результат досягається відніманням початкового значення з нуля. При цьому може виникнути переповнювання. Чи буде при цьому викинуто виключення, залежить від контексту. Логічне заперечення (!) визначене для типу bool. Результат операції - значення false, якщо операнд рівний true, і значення true, якщо операнд рівний false. Порозрядне заперечення (~), часто зване побітовим, інвертує кожен розряд в двійковому представленні операнда типу int, uint, long або ulong.
Операції заперечення представлені в лістингу 3.3.
Лістинг 3.3. Операції заперечення using System;
using System;
namespace Consoleapplicationl
{
class Classl
{
static void Main( )
{
sbyte a = 3, b = -63, c = 126;
bool d = true;
Console.WriteLine( -a); // Результат -3
Console.WriteLine( -c); // Результат -126
Console.WriteLine( !d); // Результат false
Console.WriteLine( ~a); // Результат -4
Console.WriteLine( ~b); // Результат 62
Console.WriteLine( ~c); // Результат -127
}
}
}