=(~0);这是什么意思?

时间:2011-05-11 07:17:05

标签: c

  

可能重复:
  Is it safe to use -1 to set all bits to true?
  int max = ~0; What does it mean?

您好,

我偶然发现了这段代码..

size_t temp;
temp = (~0);

任何人都知道它的作用?

4 个答案:

答案 0 :(得分:2)

这是通常用于分配由所有二进制代码构建的size_t值的一种方式,与size_t类型的实际大小无关。如果这是该代码的目的,则应使用(size_t)( -1 )

顺便说一下here's an identical question

答案 1 :(得分:2)

~是按位非运算符,它反转操作数的每个位。在这种情况下,操作数为0,因此每个位最初为0,并且在应用按位后不是每个位都是1.最终结果是得到一个用1位填充的size_t。

答案 2 :(得分:2)

这个怎么样?

C ++代码:

#include <limits>

std::size_t temp = std::numeric_limits<std::size_t>::max();

C代码: 请查看question

我认为这是更恰当的方式。

答案 3 :(得分:1)

sharptooth的答案是正确的,但为了给你更多细节,~NOT的二元运算符。基本上,您将NOT 0的二进制等效值分配给temp,并将每个位设置为1.