〜运算符的功能是什么?

Laz*_*zlo 6 c c# c++ operators

不幸的是,搜索引擎使我无法使用此查询.

例如:

int foo = ~bar;
Run Code Online (Sandbox Code Playgroud)

Joh*_*kin 12

在C和C++中,它是一个按位NOT.


Joh*_*sch 11

我假设你基于最活跃的标签,你指的是C#,但它也是NOTC和C++中的同一个运算符.

来自MSDN:

〜运算符对其操作数执行按位补码运算,具有反转每个位的效果.为int,uint,long和ulong预定义了按位补码运算符.

示例程序:

static void Main() 
{
    int[] values = { 0, 0x111, 0xfffff, 0x8888, 0x22000022};
    foreach (int v in values)
    {
        Console.WriteLine("~0x{0:x8} = 0x{1:x8}", v, ~v);
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

~0x00000000 = 0xffffffff
~0x00000111 = 0xfffffeee
~0x000fffff = 0xfff00000
~0x00008888 = 0xffff7777
~0x22000022 = 0xddffffdd
Run Code Online (Sandbox Code Playgroud)